Python PIL 和 PILLOW 如何压缩图片?

7
我想用Python 3.3编写一个程序,在图片上添加框架。我使用Python的PIL包来完成这个任务。但是,我得到的图片比原始图片小了三分之一,而且失去了相当多的焦点 / 锐度 / 光泽。Python在哪里压缩/改变图片,如何(如果可能)使其减弱?以下是可能涉及到压缩的代码段:
  1. 使用PIL加载图像:
  2. img = Image.open(element)

  3. 创建一个新的黑色图片:
  4. newImg = Image.new("RGB",(imgWidthNew,imgHightNew),(0,0,0,0))

  5. 将我的图片转换为像素地图并进行更改:
  6. pixels = newImg.load()

  7. 将我的图片粘贴到黑色图片的中间:
  8. newImg.paste (Image.open(element), (halfFrameWidth, halfFrameHight, imgWidth+halfFrameWidth, imgHight+halfFrameHight))

  9. 保存新图像:
  10. newImg.save(path,dpi=[300,300])

我主要加载.jpg图片,但由于某些问题,我提取.bmp文件。
 path = path[:path.rfind(".")] + fileEnding

但这不应该是问题,因为我在不改变数据类型的情况下也遇到了相同的问题。我的操作系统是Windows7 64BIT,并且我使用的是Python 3.3和Pillow 2.3.0。

感谢任何帮助。


图像是按其原始尺寸粘贴的,还是被缩小了? - Mark Ransom
1个回答

10

保存为JPEG格式时,您可以设置质量参数来控制压缩的程度:

newImg.save(path, 'JPEG', dpi=[300,300], quality=90)

或者以无损格式(如PNG)保存:

newImg.save(path, 'PNG', dpi=[300,300])

确保 path 扩展名和格式相匹配,否则会遇到一些麻烦。 - Mark Ransom
2
谢谢你的帮助,它确实很有用。但我也偶然发现为什么无损格式PNG在我的屏幕上看起来模糊,当我稍微放大一点时。原始文件大小适合我的屏幕,而我编辑的文件不是。当我放大时,我得到了这张图片的完美格式,它看起来和另一张一样好。无论如何,谢谢你,我想现在使用JPEG。 - Natulux

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接