如何使用 Pillow like photoshops "hard edges" 算法在 python 中调整图像大小
How to resize an image in python using Pillow like photoshops "hard edges" algorithm
我正在尝试在不使用任何形式的重采样的情况下缩小图像尺寸。我希望它完全保持硬边,而不添加任何模糊/抗锯齿。本质上,与 photoshop 的“硬边”重采样模式完全一样。但是,Pillow 的每一种内置重采样方法都会给我带来某种模糊或混叠效果。
我目前使用的代码如下
fileName = "big.jpg"
for i in range(6):
filename16 = "small" + str(i) + ".jpg"
img = Image.open(fileName)
img16 = img.resize((16, 16), resample=i)
img16.save(filename16)
原图:
结果
使用以下方法将图像大小调整为 16x16;
Photoshop 的“最近邻 - 硬边”
0 个枕头最近的邻居
1 枕头兰佐斯
2 线性枕头
3 枕头双三次
4个抱枕
5 枕头汉明
或者并排,可以清楚地看到所有的重采样方法都改变了图像的某些东西
我怎样才能得到 Pillow 中 photoshop 的“硬边”选项所达到的效果?
谢谢!
确保将图像保存为 .png 文件。 .jpg 文件是有损的,并且不能很好地压缩硬线,因为它们旨在存储常规照片。如果您查看原始照片数据,当您使用 NEAREST
进行插值时,您会看到区域之间的急剧过渡,但由于图像保存为 .jpg,因此所有这些都消失了 window。
这是使用 NEAREST
缩小尺寸后的原始数据:
.jpg 数据如下所示:
如果有杂音,你可以看到过渡。
我正在尝试在不使用任何形式的重采样的情况下缩小图像尺寸。我希望它完全保持硬边,而不添加任何模糊/抗锯齿。本质上,与 photoshop 的“硬边”重采样模式完全一样。但是,Pillow 的每一种内置重采样方法都会给我带来某种模糊或混叠效果。
我目前使用的代码如下
fileName = "big.jpg"
for i in range(6):
filename16 = "small" + str(i) + ".jpg"
img = Image.open(fileName)
img16 = img.resize((16, 16), resample=i)
img16.save(filename16)
原图:
结果
使用以下方法将图像大小调整为 16x16;
Photoshop 的“最近邻 - 硬边”
0 个枕头最近的邻居
1 枕头兰佐斯
2 线性枕头
3 枕头双三次
4个抱枕
5 枕头汉明
或者并排,可以清楚地看到所有的重采样方法都改变了图像的某些东西
我怎样才能得到 Pillow 中 photoshop 的“硬边”选项所达到的效果? 谢谢!
确保将图像保存为 .png 文件。 .jpg 文件是有损的,并且不能很好地压缩硬线,因为它们旨在存储常规照片。如果您查看原始照片数据,当您使用 NEAREST
进行插值时,您会看到区域之间的急剧过渡,但由于图像保存为 .jpg,因此所有这些都消失了 window。
这是使用 NEAREST
缩小尺寸后的原始数据:
.jpg 数据如下所示:
如果有杂音,你可以看到过渡。