Python PIL和PILLOW如何压缩图片?

时间:2014-02-20 21:30:46

标签: python image python-imaging-library image-compression

我想用Python 3.3编写一个程序,其中一个帧被添加到图片中。 我使用Python的PIL包来做到这一点。但是我得到的照片不到原来的三分之一,并且它们散开了相当多的焦点/清晰度/光泽度。 Python在哪里压缩/更改图片以及如何(如果可能)我可以将其压缩?

我可以想到一些段落,可能是压缩的段落。

  1. 我用PIL加载图片:

    img = Image.open(element)

  2. 我创建了一张黑色的新图片:

    newImg = Image.new("RGB",(imgWidthNew,imgHightNew),(0,0,0,0))

  3. 我从图片中创建了一个像素图并更改了一些:

    pixels = newImg.load()

  4. 我将照片粘贴到黑色照片的中间:

    newImg.paste (Image.open(element), (halfFrameWidth, halfFrameHight, imgWidth+halfFrameWidth, imgHight+halfFrameHight))

  5. 新图片已保存:

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

  6. 我主要加载.jpg图片,但由于某些问题,我提取.bmp文件。

     path = path[:path.rfind(".")] + fileEnding
    

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

    感谢您的帮助。

1 个答案:

答案 0 :(得分:8)

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

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

或者,以无损格式保存,例如PNG:

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