我有以两种不同方式加载和保存图像的代码 - 首先使用openCV,第二种使用PIL。
import cv2
from PIL import Image
img = cv2.imread("/home/myname/png/image.png")
cv2.imwrite("/home/myname/png/image_save.png", img)
img = Image.open("/home/myname/png/image.png")
img.save("/home/myname/png/image_save_pil.png")
原始图像大小为204.6 kB。 openCV得到的结果为245.0 kB,PIL的结果为204.6 kB。
为什么使用openCV保存的图像尺寸较大?
答案 0 :(得分:2)
尺寸差异与ZLIB压缩设置有关。
使用OpenCV,您可以使用此代码(来自此answer)
将压缩设置为9cv2.imwrite('image.png', img, [int(cv2.IMWRITE_PNG_COMPRESSION), 9])
答案 1 :(得分:0)
如果两个PNG由不同的库生成,则不能指望它们具有相同的大小。
文件规范定义了文件的结构,因此每个人都知道在哪里写信息以及在哪里找到它。如何编码以及如何解码数据...
很多东西都是可选的,比如元数据,压缩率,......
就像在两个不同的家庭中养同卵双胞胎一样。
您可以尝试为图像写入功能设置相同的参数,但即使这样,您也不可能获得完全相同的文件大小。