我正在尝试使用PIL将.jpg图像转换为webp格式.
我正在使用这段代码:
from PIL import Image
import glob, os
for infile in glob.glob("*.jpg"):
file, ext = os.path.splitext(infile)
im = Image.open(infile).convert("RGB")
im.save(file + ".webp", "WEBP")
Run Code Online (Sandbox Code Playgroud)
但是在运行它时出现以下错误:
Traceback (most recent call last):
File "webp.py", line 7, in <module>
im.save(file + ".webp", "WEBP")
File "/usr/local/lib/python2.7/dist-packages/PIL/Image.py", line 1444, in save
save_handler = SAVE[format.upper()] # unknown format
KeyError: 'WEBP'
Run Code Online (Sandbox Code Playgroud)
请帮我修理它.我安装了libwebp-dev.
>>> import PIL
>>> dir(PIL)
['PILLOW_VERSION', 'VERSION', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', '_plugins']
>>> PIL.PILLOW_VERSION
'2.2.1'
>>> PIL.VERSION
'1.1.7'
Run Code Online (Sandbox Code Playgroud) 如何使用枕头获得tiff图像DPI?不能在文档中看到.
from PIL import Image
im = Image.open('test.tif')
print("im dpi?")
Run Code Online (Sandbox Code Playgroud) 我正在尝试在Windows上安装Pillow 3.1.根据说明,我应该只需输入:
pip install Pillow
但我得到:
ValueError: jpeg is required unless explicitly disabled using --disable-jpeg, aborting
因为现在(从3.0之后的版本开始,我认为?)安装枕头需要libjpeg.我不知道如何在Windows上做这个魔术.也许安装明或什么的.但我真的希望有一个简单的点子安装.
我可以通过直观的命令禁用这些选项:
pip install --upgrade pillow --global-option="build_ext" --global-option="--disable-jpeg" --global-option="--disable-zlib"
但是然后构建失败,因为我没有安装Visual C++.
是的,我可以通过从非官方存储库列表下载来安装Pillow .但有没有办法在没有大量额外安装的情况下使用pip在Windows上执行此操作?
我正在尝试用Pillow模糊图像,使用ImageFilter如下:
from PIL import ImageFilter
blurred_image = im.filter(ImageFilter.BLUR)
Run Code Online (Sandbox Code Playgroud)
这样可以正常工作,除了它有一个对我来说太小的设定半径.我想模糊图像以至于几乎无法识别它.在文档中,我看到默认情况下半径设置为2,但我真的不明白如何将其设置为更大的值?
有没有人知道如何用枕头增加模糊半径?欢迎所有提示!
我需要在python中将图像从CMYK转换为RGB.我用这种方式使用Pillow:
img = Image.open('in.jpg')
img = img.convert('RGB')
img.save('out.jpg')
Run Code Online (Sandbox Code Playgroud)
该代码有效,但如果我用Photoshop转换相同的图像,我会得到不同的结果,如下所示: -
在photoshop中完成的唯一操作是将方法从CMYK更改为RGB.为什么两个RGB图像之间存在这种差异?它可能是颜色配置文件问题?
我正在使用以下两种方法来计算设置字体类型和大小的示例字符串的渲染宽度:
font = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf", 14)
sample = "Lorem ipsum dolor sit amet, partem periculis an duo, eum lorem paulo an, mazim feugiat lobortis sea ut. In est error eirmod vituperata, prima iudicabit rationibus mel et. Paulo accumsan ad sit, et modus assueverit eum. Quod homero adversarium vel ne, mel noster dolorum te, qui ea senserit argumentum complectitur. Duo at laudem explicari deterruisset, eu quo hinc mnesarchum. Vel autem insolens atomorum at, dolorum suavitate voluptatum duo ex."
#METHOD 1 …Run Code Online (Sandbox Code Playgroud) 我对Python很新,并尝试在Windows 7上安装Pillow软件包.我从这里下载并运行了MS Windows安装程序Pillow-2.2.1.win-amd64-py3.3.exe .它似乎安装得很好.如果我运行简单的代码行:
from PIL import Image
Run Code Online (Sandbox Code Playgroud)
直接从Python解释器,它运行良好.PIL上的help()给出了包内容.
但是当我尝试在脚本中运行相同的代码行时,我得到了一个ImportError: No module named PIL.我错过了什么?
(请注意,我已经能够import sys和import MySQLdb从脚本就好内.)
已解决:确定,当我运行脚本时,我正在运行Python 2.7.(我想我模糊地回忆起必须安装旧版本以便我可以与MySQL接口.)谢谢大家指出我应该检查正在使用的版本.
我在AWS Elastic Beanstalk下处理Python上的jpeg文件时遇到了一些麻烦.
我在.ebextensions/python.config文件中有这个:
packages:
yum:
libjpeg-turbo-devel: []
libpng-devel: []
freetype-devel: []
...
Run Code Online (Sandbox Code Playgroud)
所以我相信我已经安装了libjpeg并且正在工作(我试过libjpeg-devel,但是yum找不到这个包).
另外,我在我的requirements.txt上有这个:
Pillow==2.5.1
...
Run Code Online (Sandbox Code Playgroud)
所以我相信我已经安装了Pillow并在我的环境中工作.
然后,因为我有Pillow和libjpeg,我正在尝试使用Python脚本中的PIL.Image进行一些工作并保存到文件中.像这样:
from PIL import Image
def resize_image(image,new_size,crop=False,correctOrientationSize=False):
assert type(new_size) == dict
assert new_size.has_key('width') and new_size.has_key('height')
THUM_SIZE = [new_size['width'],new_size['height']]
file_like = cStringIO.StringIO(base64.decodestring(image))
thumbnail = Image.open(file_like)
(width,height) = thumbnail.size
if correctOrientationSize and height > width:
THUM_SIZE.reverse()
thumbnail.thumbnail(THUM_SIZE)
if crop:
# Recorta imagem
thumbnail = crop_image(thumbnail)
output = cStringIO.StringIO()
thumbnail.save(output,format='jpeg')
return output.getvalue().encode('base64')
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试在Elastic Beanstalk的实例上运行它时,异常"解码器jpeg不可用"时调用.save()方法.
如果我SSH到我的实例,它工作得很好,我已经尝试重建环境.
我究竟做错了什么?
更新:
正如所建议的那样,我再次连接到实例并通过pip(/ opt/python/run/venv/bin/pip)重新安装Pillow,而不是在我确定libjpeg-devel在Pillow之前的环境之前.
我跑了selftest.py并确认我支持jpeg.所以,在最后一次尝试中,我去了Elastic Beanstalk界面上的"重启App Server".有效.
谢谢你们.
python amazon-web-services python-imaging-library pillow amazon-elastic-beanstalk
我一直在努力应对这一挑战,我已经设法利用以前的帖子和其他资源获得了一个好点.
我正在尝试将PIL.Image转换为QPixmap,以便我可以在PyQT GUI上使用QgraphicsScene进行显示.但是当显示图片时颜色已经改变了?有没有人遇到过这个问题?
我用于此的代码如下.
self.graphicsScene.clear()
im = Image.open('Penguins.jpg')
im = im.convert("RGBA")
data = im.tobytes("raw","RGBA")
qim = QtGui.QImage(data, im.size[0], im.size[1], QtGui.QImage.Format_ARGB32)
pix = QtGui.QPixmap.fromImage(qim)
self.graphicsScene.addPixmap(pix)
self.graphicsView.fitInView(QtCore.QRectF(0,0,im.size[0], im.size[1]), QtCore.Qt.KeepAspectRatio)
self.graphicsScene.update()
Run Code Online (Sandbox Code Playgroud)
我在Windows 7 64bit上,使用python 3.4与PyQt4和枕头3.1.0.我得到的结果可以在下面看到.
原始图片

GUI中显示的图片

提前致谢 :).
在处理了具有透明度的先前优化的索引颜色PNG图像之后(参见此处针对某些背景,因为该问题涉及相同的图像文件),使用以下代码,PLTE块似乎扩展为具有比有效使用的颜色更多的颜色.
Mu当前代码:
#!/usr/bin/env/python3
import os
from PIL import Image
source_file = os.path.expanduser("~/Desktop/prob.png")
dest_file = os.path.expanduser("~/Desktop/processed_img.png")
img = Image.open(source_file)
# Convert all colors in the palette to grayscale and save the new palette
pal = img.getpalette()
for i in range(len(pal) // 3):
# Using ITU-R 601-2 luma transform
g = (pal[3*i] * 299 + pal[3*i+1] * 587 + pal[3*i+2] * 114) // 1000
pal[3*i: 3*i+3] = [g, g, g]
img.putpalette(pal)
try:
img.save(dest_file, optimize=True, format="PNG")
except IOError:
ImageFile.MAXBLOCK = img.size[0] …Run Code Online (Sandbox Code Playgroud)