我正在尝试使用PIL保存我从头开始创建的图像
newImg1 = PIL.Image.new('RGB', (512,512))
pixels1 = newImg1.load()
...
for i in range (0,511):
for j in range (0,511):
...
pixels1[i, 511-j]=(0,0,0)
...
newImg1.PIL.save("img1.png")
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
回溯(最近一次调用最后一次):文件"",第1行,文件"C:\ Python27\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py",第523行,在runfile execfile中(文件名,命名空间) )文件"C:\ Python27\Lib\site-packages\xy\pyimgmake.py",第125行,在newImg1.PIL.save("img1.png")文件"C:\ Python27\lib\site-packages\PIL\Image.py",第512行,getattr 引发AttributeError(name)AttributeError:PIL
我需要帮助解释此错误以及如何正确保存图像为"img1.png"(我将图像保存到默认保存点我很好).
更新:
from PIL import Image as pimg
...
newImg1 = pimg.new('RGB', (512,512))
...
newImg1.save("img1.png")
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
... newImg1.save("img1.png")文件"C:\ Python27\lib\site-packages\PIL\Image.py",第1439行,保存save_handler(self,fp,filename)文件"C:\Python27\lib\site-packages\PIL\PngImagePlugin.py",第572行,_save ImageFile._save(im,_idat(fp,chunk),[("zip",(0,0)+ im.size, 0,rawmode)])文件"C:\ Python27\lib\site-packages\PIL\ImageFile.py",第481行,在_save中e = Image._getencoder(im.mode,e,a,im.encoderconfig)文件"C:\ Python27\lib\site-packages\PIL\Image.py",第399行,在_getencoder中返回apply(编码器,(模式,)+ args + extra)TypeError:需要一个整数
我想在互联网上找到图像的尺寸.我试过用
from PIL import Image
import urllib2 as urllib
fd = urllib.urlopen("http://a/b/c")
im = Image.open(fd)
im.size
Run Code Online (Sandbox Code Playgroud)
正如在这个答案中所建议的那样,但是我收到了错误消息
addinfourl instance has no attribute 'seek'
Run Code Online (Sandbox Code Playgroud)
我检查过并且返回的对象urllib2.urlopen(url)似乎没有根据的搜索方法dir.
那么,我需要做些什么才能将图像从Internet加载到PIL中?
我想从NumPy数组创建一个PIL图像.这是我的尝试:
# Create a NumPy array, which has four elements. The top-left should be pure red, the top-right should be pure blue, the bottom-left should be pure green, and the bottom-right should be yellow
pixels = np.array([[[255, 0, 0], [0, 255, 0]], [[0, 0, 255], [255, 255, 0]]])
# Create a PIL image from the NumPy array
image = Image.fromarray(pixels, 'RGB')
# Print out the pixel values
print image.getpixel((0, 0))
print image.getpixel((0, 1))
print image.getpixel((1, 0))
print image.getpixel((1, 1))
# …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用NumPy和PIL将两个图像组合在一起.我在MATLAB中这样做的方式如下:
>> M1 = imread('_1.jpg');
>> M2 = imread('_2.jpg');
>> resM = M1 + M2;
>> imwrite(resM, 'res.jpg');
Run Code Online (Sandbox Code Playgroud)
我得到这样的东西:
alt text http://www.deadlink.cc/matlab.jpg
使用合成程序并添加图像,MATLAB结果似乎是正确的.
在Python中我试图做同样的事情:
from PIL import Image
from numpy import *
im1 = Image.open('/Users/rem7/Desktop/_1.jpg')
im2 = Image.open('/Users/rem7/Desktop/_2.jpg')
im1arr = asarray(im1)
im2arr = asarray(im2)
addition = im1arr + im2arr
resultImage = Image.fromarray(addition)
resultImage.save('/Users/rem7/Desktop/a.jpg')
Run Code Online (Sandbox Code Playgroud)
我得到这样的东西:
alt text http://www.deadlink.cc/python.jpg
为什么我会得到所有那些时髦的颜色?我也试过使用ImageMath.eval("a+b", a=im1, b=im2),但是我得到一个关于RGB不支持的错误.
我也看到有一个Image.blend()但需要alpha.
什么是实现我正在寻找的最佳方式?
源图像(图像已被删除):
alt text http://www.deadlink.cc/_1.jpg alt text http://www.deadlink.cc/_2.jpg
嗯,好吧,我使用添加图片图标添加了源图像,当我正在编辑帖子时它们出现,但由于某种原因,图像没有显示在帖子中.
(图片已被删除)2013 05 09
我有两个PNG,我试图在Python 2.5上使用ReportLab 2.3将其组合成PDF.当我使用canvas.drawImage(ImageReader)将PNG写入画布并保存时,透明度变为黑色.如果我使用PIL(1.1.6)生成一个新的图像,然后将(或)PNG粘贴到PIL图像上,它就可以很好地合成.我在Gimp中进行了双重检查,两张图像都有正常的Alpha通道并正确保存.我没有收到错误,似乎没有任何东西我的google-fu可以出现.
有没有人在ReportLab画布上合成一个透明的PNG,透明度是否正常工作?谢谢!
我可能在手册中寻找错误的东西,但我希望拍摄一个图像对象并展开它而不需要调整原始图像的大小(拉伸/压扁).
玩具示例:想象一个蓝色矩形,200 x 100,然后我执行一些操作,我有一个新的图像对象,400 x 300,由一个白色背景组成,其上有一个200 x 100蓝色矩形.如果我可以控制扩展的方向,或新的背景颜色等,可以获得奖励.
基本上,我有一个图像,我将迭代添加,我不知道它将在一开始的大小.
我想我可以抓住原始物体,制作一个新的,略大的物体,将原件粘贴在那里,再画一点,然后重复.看起来它可能在计算上很昂贵.但是,我认为会有一个功能,因为我认为这是一个常见的操作.也许我错了.
我一直在墙上撞了一会儿,所以也许有人可以提供帮助.
我正在使用PIL打开一个带有透明背景和一些随机黑色涂鸦的PNG,并尝试将其置于另一个PNG(没有透明度)的顶部,然后将其保存到第三个文件.
它最后都是黑色的,这很刺激,因为我没有说它是黑色的.
我已经使用其他帖子中的多个提议修复对此进行了测试.图像以RGBA格式打开,它仍然搞砸了.
此外,该程序应该处理各种文件格式,这就是我使用PIL的原因.讽刺的是,我试过的第一种格式都是搞砸了.
任何帮助,将不胜感激.这是代码:
from PIL import Image
img = Image.open(basefile)
layer = Image.open(layerfile) # this file is the transparent one
print layer.mode # RGBA
img.paste(layer, (xoff, yoff)) # xoff and yoff are 0 in my tests
img.save(outfile)
Run Code Online (Sandbox Code Playgroud) import Image
import os
for dirname, dirs, files in os.walk("."):
for filename in files:
try:
im = Image.open(os.path.join(dirname,filename))
except IOError:
print "error opening file :: " + os.path.join(dirname,filename)
print im.size
Run Code Online (Sandbox Code Playgroud)
在这里,我试图打印目录(和子)中所有文件的大小.但我知道im在排队时超出范围im.size.但是如果不使用else或finally阻止我怎么办呢.
显示以下错误:
Traceback (most recent call last):
File "batch.py", line 13, in <module>
print im.size
NameError: name 'im' is not defined
Run Code Online (Sandbox Code Playgroud) 我正在使用Pillow和numpy,但在Pillow Image对象和numpy数组之间进行转换时遇到问题.
当我执行以下代码时,结果很奇怪.
im = Image.open(os.path.join(self.img_path, ifname))
print im.size
in_data = np.asarray(im, dtype=np.uint8)
print in_data.shape
Run Code Online (Sandbox Code Playgroud)
结果是
(1024, 768)
(768, 1024)
Run Code Online (Sandbox Code Playgroud)
尺寸为何改变?
在Windows 7上使用python 2.7安装包枕
python -m pip install pillow
Run Code Online (Sandbox Code Playgroud)
获得成功消息(Pillow).关闭并重新打开cmd终端.
但是当我尝试时
import pillow
Run Code Online (Sandbox Code Playgroud)
我收到错误消息
Requirement already satisfied (use --upgrade to upgrade): pillow in c:\python27\lib\site-packages
Run Code Online (Sandbox Code Playgroud)
如果Successfully installed pillow再次运行,它说
python -m pip install pillow
Run Code Online (Sandbox Code Playgroud)