【问题标题】:How do I properly set DPI when saving a pillow image?保存枕头图像时如何正确设置 DPI?
【发布时间】:2015-07-10 22:40:44
【问题描述】:

我正在尝试使用 Pillow library 在 Python 上以编程方式创建图像,但图像中文本的图像质量存在问题。

我想将我生成的图像保存为 PNG,所以我在保存时根据this 设置 DPI,但是我是否使用 dpi=(72,72)dpi=(600,600) 它在视觉上看起来是一样的。

我的代码如下:

from PIL import Image, ImageDraw, ImageFont

def generate_empty_canvas(width, height, color='white'):
    size = (width, height)
    return Image.new('RGB', size, color=color)

def draw_text(text, canvas):
    font = ImageFont.truetype('Verdana.ttf', 10)
    draw = ImageDraw.Draw(canvas)
    if '\n' not in text:
        draw.text((0, 0), text, font=font, fill='black')
    else:
        draw.multiline_text((0, 0), text, font=font, fill='black')

def create_sample():
    text = 'aaaaaaaaaaaaaaaaaa\nbbbbbbbbbbbbbbbbbbbbbbb\nccccccccccccccccccccc'
    canvas = generate_empty_canvas(200, 50)
    draw_text(text, canvas)
    canvas.save('low_quality.png', dpi=(72, 72))
    canvas.save('high_quality.png', dpi=(600, 600))

low_quality.png 是:

high_quality.png 是:

从图像中可以看出,质量没有改变。 我在这里做错了什么?

我在哪里设置 DPI 以使图像真正具有 dpi=600?

【问题讨论】:

  • 为了避免掉入这个陷阱,在尝试使用 Pillow 设置 DPI 时,请尽可能使用更新的版本。我遇到了 6.0.0 无法正确保存 DPI 的问题。我正在使用 8.2.0,它肯定可以工作。有点与您的实际问题无关,但有些人可能会觉得它很有用。

标签: python image python-imaging-library dpi pillow


【解决方案1】:

DPI 值只是计算机图像上的元数据。它们提供有关如何显示或打印图像的提示。

以 360 dpi 打印 360×360 图像将产生 1×1 英寸的打印输出。

一种简单的解释方式:DPI 设置建议图像的缩放级别。

与其他 DPI 一起保存不会更改图像的内容。如果您想要更大的图像,请创建更大的画布并使用更大的字体。

【讨论】:

    猜你喜欢
    • 2020-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多