以编程方式更改图像分辨率
我计算了一下,如果我想要生成的图片是A4大小,打印时需要600dpi的清晰度,那么它的尺寸应该是7016x4961像素,且在72dpi的情况下生成。所以,我是通过程序生成这个图片的,然后在Photoshop里测试了一下,感觉没问题。如果我调整一下大小,它就能达到合适的尺寸和分辨率。
.
我想知道的是,是否可以通过编程来实现这个调整大小的过程,最好是用PIL这个库,但也不一定非得用它。我需要把它的DPI调高一些。
3 个回答
0
这里是如何按文件夹批量调整大小,并跳过其他文件类型和像.DS_Store这样的Mac系统文件的方法。
from PIL import Image
import os
Image.MAX_IMAGE_PIXELS = None
path = "./*your-source-folder*"
resize_ratio = 2 # where 0.5 is half size, 2 is double size
def resize_aspect_fit():
dirs = os.listdir(path)
for item in dirs:
print(item)
if item == '.DS_Store':
continue
if item == 'Icon\r':
continue
if item.endswith(".mp4"):
continue
if item.endswith(".txt"):
continue
if item.endswith(".db"):
continue
if os.path.isfile(path+item):
image = Image.open(path+item)
file_path, extension = os.path.splitext(path+item)
new_image_height = int(image.size[0] / (1/resize_ratio))
new_image_length = int(image.size[1] / (1/resize_ratio))
image = image.resize((new_image_height, new_image_length), Image.ANTIALIAS)
image.save("./*your-output-folder*/" + item)
resize_aspect_fit()
23
这段代码会使用PIL库把一个PNG图片的大小调整为7016x4961:
size = 7016, 4961
im = Image.open("my_image.png")
im_resized = im.resize(size, Image.ANTIALIAS)
im_resized.save("my_image_resized.png", "PNG")
也许更好的方法是在打印之前,把你的画布放大x倍,其中的x是你需要计算出来的一个数值(对于这个特定的图片来说,就是7016x4961的大小)。
38
如果你生成的图片大小是7016 x 4961像素,那它在600 dpi(每英寸点数)的情况下,已经是A4纸的大小了。所以你不需要调整图片的尺寸,只需要在文件中设置一下分辨率的信息就可以了。
你可以使用PIL来做到这一点:
from PIL import Image
im = Image.open("test.png")
im.save("test-600.png", dpi=(600,600))