我正在尝试调整一些图像的大小,其中大部分都是JPG.但在一些图像中,我收到错误:
Traceback (most recent call last):
File "image_operation_new.py", line 168, in modifyImage
tempImage.save(finalName);
File "/Users/kshitiz/.virtualenvs/django_project/lib/python2.7/site- packages/PIL/Image.py", line 1465, in save
save_handler(self, fp, filename)
File "/Users/kshitiz/.virtualenvs/django_project/lib/python2.7/site- packages/PIL/JpegImagePlugin.py", line 455, in _save
raise IOError("cannot write mode %s as JPEG" % im.mode)
IOError: cannot write mode P as JPEG
Run Code Online (Sandbox Code Playgroud)
我没有改变图像类型,我正在使用枕头库.我的操作系统是Mac OS X.我该如何解决这个问题?
我正在尝试使用枕头将png转换为jpeg.我试过几次没有成功.这两个似乎适用于像这样的小png图像.
第一个代码:
from PIL import Image
import os, sys
im = Image.open("Ba_b_do8mag_c6_big.png")
bg = Image.new("RGB", im.size, (255,255,255))
bg.paste(im,im)
bg.save("colors.jpg")
Run Code Online (Sandbox Code Playgroud)
第二个代码:
image = Image.open('Ba_b_do8mag_c6_big.png')
bg = Image.new('RGBA',image.size,(255,255,255))
bg.paste(image,(0,0),image)
bg.save("test.jpg", quality=95)
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试转换像这样的更大的图像
我越来越
Traceback(最近一次调用最后一次):
文件"png_converter.py",第14行,in
bg.paste(image,(0,0),image)文件"/usr/lib/python2.7/dist-packages/PIL/Image.py",第1328行,粘贴
self.im.paste(im,box,mask.im)ValueError:错误的透明度掩码
我究竟做错了什么?
我正在尝试在项目上传之前调整图像大小并降低图像质量。这是我尝试过的,
def save(self):
im = Image.open(self.image)
output = BytesIO()
im = im.resize(240, 240)
im.save(output, format='JPEG', quality=95)
output.seek(0)
self.image = InMemoryUploadedFile(output, 'ImageField', "%s.jpg" % self.image.name.split('.')[0], 'image/jpeg', sys.getsizeof(output), None)
super(Model, self).save()
Run Code Online (Sandbox Code Playgroud)
如果我上传jpg图像,它工作正常,但如果我上传png或任何其他图像类型,它就不起作用,它会引发诸如cannot write mode RGBA as JPEG&之类的错误cannot write mode P as JPEG。
我们怎样才能解决这个问题?谢谢你!