【发布时间】:2013-07-25 03:03:41
【问题描述】:
我正在使用 PIL 来缩放从 600 像素宽到 2400 像素宽到大约 200 像素宽的图像。我已经合并了Image.ANTIALIAS 并设置了quality=95 以尝试获得最高质量的图像。
但是,与原始图像相比,缩小后的图像质量仍然很差。
这是我正在使用的代码:
# Open the original image
fp = urllib.urlopen(image_path)
img = cStringIO.StringIO(fp.read())
im = Image.open(img)
im = im.convert('RGB')
# Resize the image
resized_image = ImageOps.fit(im, size, Image.ANTIALIAS)
# Save the image
resized_image_object = cStringIO.StringIO()
resized_image.save(resized_image_object, image_type, quality=95)
按照这些比例缩放图像同时尽可能保持图像质量的最佳方法是什么?
我应该注意,我的主要目标是尽可能获得最高质量的图像。我并不真正关心这个过程在时间方面的效率。
【问题讨论】:
-
我们可以看一些例子吗?即原始图像、使用脚本制作的缩小图像和使用 Photoshop 制作的缩小图像以进行比较?
-
您通常最好遍历结果图像中的像素区域并查看它们映射回原始图像中的哪个区域。这对于旋转更重要,但也可能与完全任意缩放有关。
-
您显示的代码可能是 PIL 可以做的最好的代码 - 您正在转换为 RGB 并使用 ANTIALIAS。我最近发现 ANTIALIAS 实际上是被认为相当不错的 Lanczos3 算法。我很想知道您发现结果中缺少什么?
标签: python python-imaging-library