PIL中的PNG图像质量

时间:2015-09-21 15:55:06

标签: python image google-app-engine png python-imaging-library

一直试图通过应用引擎将以下png文件上传到Google云端存储:

enter image description here

在上传之前,我通过PIL运行它来处理任何图像旋转或背景颜色等变化

然而,即使在python命令行中运行相同的命令也没问题,我在通过应用程序运行PIL操作时的图像质量非常糟糕

enter image description here

有人有想法吗?

对于PIL命令,我只是运行以下命令:

imtemp = Image.open('/[path]/logo.png')
size = max(imtemp.size[0],imtemp.size[1]) 
im = Image.new('RGBA', (size,size), (255,255,255,0))
im.paste(imtemp, ((size-imtemp.size[0])/2,(size-imtemp.size[1])/2)) 
imtemp = im 
im = Image.new('RGB', (size,size), '#FFFFFF') 
im.paste(imtemp, (0,0), imtemp) 
im.show()

尝试过以下,但仍然没有运气

    imtemp = Image.open(StringIO(imagedata)).convert("RGBA")
    im = Image.new("RGB", imtemp.size, "#FFFFFF")
    im.paste(imtemp, None, imtemp)
    imageoutput = StringIO()
    im.save(imageoutput, format="PNG", quality=85, optimize=True, progressive=True)
    imageoutput = imageoutput.getvalue()

1 个答案:

答案 0 :(得分:2)

看起来你想拍摄一张可能带有透明像素的调色图像,将其投影在白色背景上,并制作一个质量调整版本的图片,这个图片大一半。

您可以使用convert()thumbnail()功能:

from PIL import Image

# Open the image and convert it to RGBA.
orig = Image.open("fresh.png").convert("RGBA")

# Paste it onto a white background.
im = Image.new("RGB", orig.size, "#ffffff")
im.paste(orig, None, orig)

# Now a quality downsize.
w, h = im.size
im.thumbnail((w / 2, h / 2), Image.ANTIALIAS)
im.show()    

当然,如果您希望图片保持原始大小,可以退出thumbnail()