以编程方式更改图像分辨率

21

我已经计算出,如果我想要生成的图像是A4纸大小@ 600dpi,用于打印目的,它需要是7016x4961px @ 72dpi。因此,我通过编程生成它,然后在Photoshop中进行测试,看起来很好,所以如果我调整大小,它会得到正确的大小和分辨率。

Photoshop中的图像大小对话框.

我想知道的是是否可以通过编程方式进行此调整大小,最好使用PIL,但不一定非要使用它。我需要将其提高DPI。


3
如果您真的在生成它,请为了飞行意大利面怪物的爱,在所需分辨率下生成它。如果您确实需要升级,可以访问https://dev59.com/GUrSa4cB1Zd3GeqPVl2s#1750331 :) - Kimvais
实际上我是用HTML5画布生成它,然后使用http://www.nihilogic.dk/labs/canvas2image/中的image2canvas保存,所以我无法在那里控制DPI。有什么想法吗? - Sergei Basharov
在你的问题中,“72 dpi”很令人困惑。如果你的意思是(正如我所猜测的)“如何将一个7016x4961像素的图像分辨率设置为600dpi,以便在A4纸上打印?”,那么你可以使用PIL来完成,我在我的答案中已经解释了。 - MatthieuW
3个回答

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))

我不知道为什么,但它不能处理png图像。 - Tymophiyy

22

这段代码使用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)。


0

以下是如何批量调整大小(按文件夹)并跳过其他文件类型和 Mac 系统文件(如 .DS_Store)的方法

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()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接