保存枕头图像时如何正确设置 DPI?

2023-11-23

我正在尝试使用Python以编程方式创建图像枕头库但我遇到图像内文本的图像质量问题。

我想将生成的图像保存为 PNG,因此我在保存时设置 DPIthis,但我是否保存dpi=(72,72) or 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 是:

Image dpi=72

high_quality.png 是:

Image dpi=600

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

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


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

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

简单的解释方法是:DPI 设置建议图像的缩放级别。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

保存枕头图像时如何正确设置 DPI? 的相关文章

  • 如何打印脚本的每一行,因为它仅针对正在运行的顶级脚本运行?

    python 跟踪模块将允许您运行一个脚本 打印每一行代码 因为它在脚本和所有导入的模块中运行 如下所示 python m trace trace myscript py 有没有办法做同样的事情 但是only打印顶级调用 即仅打印以下行my
  • 从 asyncio 子进程获取实时输出

    我正在尝试使用 Python asyncio 子进程来启动交互式 SSH 会话并自动输入密码 实际用例并不重要 但它有助于说明我的问题 这是我的代码 proc await asyncio create subprocess exec ssh
  • 使用 keras 澄清 Yolo v3 模型输出

    我将 yolo v3 模型与 keras 一起使用 该网络为我提供了形状如下的输出容器 1 13 13 255 1 26 26 255 1 52 52 255 所以我找到了这个link https www cyberailab com ho
  • 使用python编辑html,但是lxml将漂亮的html实体转换为奇怪的编码

    我正在尝试使用 python 带有 pyquery 和 lxml 来更改和清理一些 html Eg html div p It 146 s a spicy meatball p div lxml html clean 函数 clean ht
  • 如何进行重定向并保留查询字符串?

    我想进行重定向并保留查询字符串 就像是self redirect加上发送的查询参数 那可能吗 newurl my new route urllib urlencode self request params self redirect ne
  • pandas DataFrame 中行的高效成对比较

    我目前正在处理一个较小的数据集 大约 900 万行 不幸的是 大多数条目都是字符串 即使强制类别 框架在内存中也只有几 GB 我想做的是将每一行与其他行进行比较 并对内容进行直接比较 例如 给定 A B C D 0 cat blue old
  • Flask 和 Reactjs 抛出 JSX 转换错误

    我已经开始将 ReactJS 与 Python Flask 后端结合使用 通过 Flask 渲染模板时 我在 Chrome 控制台中收到以下客户端错误 错误 找不到模块 jstransform visitors es6 templates
  • Python:处理图像并保存到文件流

    我需要使用 python 处理图像 应用过滤器和其他转换 然后使用 HTTP 将其提供给用户 现在 我正在使用 BaseHTTPServer 和 PIL 问题是 PIL 无法直接写入文件流 因此我必须写入临时文件 然后读取该文件 以便将其发
  • 使用最新值进行采样

    考虑以下系列 created at 2014 01 27 21 50 05 040961 80000 00 2014 03 12 18 46 45 517968 79900 00 2014 09 05 20 54 17 991260 636
  • 在 Python 中引发异常的正确方法是什么? [复制]

    这个问题在这里已经有答案了 这是简单的代码 import sys class EmptyArgs StandardError pass if name main The first way to raise an exception if
  • 在添加数据之前使用 Python gdata 清除工作表中的行

    我有一个 Google 电子表格 我使用 python 脚本和 gdata 库填充值 如果我多次运行脚本 它会将新行附加到工作表中 我希望脚本在填充之前首先清除行中的所有数据 这样每次运行时我都会有一组新的数据脚本 我尝试过使用 Updat
  • 在基本 Tensorflow 2.0 中运行简单回归

    我正在学习 Tensorflow 2 0 我认为在 Tensorflow 中实现最基本的简单线性回归是一个好主意 不幸的是 我遇到了几个问题 我想知道这里是否有人可以提供帮助 考虑以下设置 import tensorflow as tf 2
  • PySpark DataFrame 上分组数据的 Pandas 式转换

    如果我们有一个由一列类别和一列值组成的 Pandas 数据框 我们可以通过执行以下操作来删除每个类别中的平均值 df DemeanedValues df groupby Category Values transform lambda g
  • 如何读取多个文件并将它们合并到一个 pandas 数据框中?

    我想读取位于同一目录中的多个文件 然后将它们合并到一个 pandas 数据框中 如果我这样做的话它会起作用 import pandas as pd df1 pd read csv data 12015 csv df2 pd read csv
  • 数据类和属性装饰器

    我一直在阅读 Python 3 7 的数据类 作为命名元组的替代品 我通常在必须将数据分组到结构中时使用它 我想知道数据类是否与属性装饰器兼容 以便为数据类的数据元素定义 getter 和 setter 函数 如果是这样 是否在某处进行了描
  • 从 SUDS 中的 SOAP 响应中提取 Cookie

    我必须使用具有多种服务的 API 所有这些都需要来自下面的身份验证的 JSESSION cookie 然而 当我调用下一个服务时 它不会保留 cookie 因此会拒绝它们 from suds client import Client url
  • 如何将 SD 卡图像添加到 coverflow?

    Here is my coverflow with drawables This is my Image Adapter Code The Constant IMAGE RESOURCE IDS private static final L
  • 如何使用 Matplotlib 可视化标量二维数据?

    所以我有一个网格网格 矩阵 X 和 Y 以及标量数据 矩阵 Z 我需要将其可视化 最好是一些 2D 图像 在各点处带有颜色 显示 Z 值 我做了一些研究 但没有找到任何能完全满足我想要的效果的东西 pyplot imshow Z 看起来不错
  • 如何将另一整列作为参数传递给 pandas fillna()

    我想用另一列中的值填充一列中的缺失值 使用fillna方法 我读到循环遍历每一行将是非常糟糕的做法 最好一次完成所有事情 但我不知道如何使用fillna 之前的数据 Day Cat1 Cat2 1 cat mouse 2 dog eleph
  • 如何从 Pandas 数据框函数调用中回顾之前的行?

    我正在研究 回测交易系统 我有一个包含 OHLC 数据的 Pandas 数据框 并添加了几个计算列 https stackoverflow com questions 12376863 adding calculated columns t

随机推荐

  • 谷歌图表时间线水平滚动

    我有一个时间线图表 与本页的第一个示例非常相似 https developers google com chart interactive docs gallery timeline 我在 Y 轴上有活动 做午餐 吃饭 等等 在 X 轴上我
  • 使用 Django ORM 处理大量大记录

    我有一个包含大约 30k 记录的表 我正在尝试使用 Django 的 ORM 对其进行迭代和处理 每条记录存储几个二进制 blob 每个二进制 blob 的大小可以是几 MB 我需要对其进行处理并将其写入文件 然而 由于内存限制 我在使用
  • 在C中显示颜色数组[关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 我的程序既写入又读取颜色数组 如下所示 struct Image size t width size t height struct Color data struct Color c
  • 将非 ASCII 字符输入到 scanf("%s")

    有没有一种方法可以向使用的 scanf 发出非 ascii 十六进制字符 s 我正在尝试插入十六进制字符 例如 x08 xDE xAD等等 以演示缓冲区溢出 输入不是命令行参数 而是程序内的 scanf 我假设您想在标准输入上提供任意数据
  • 从共享库获取枚举定义

    我正在使用 ctypes 访问用 C 编写的共享库 共享库的 C 源代码包含一个枚举 例如 enum invalid 0 type1 1 type2 2 type enum 在Python方面 我打算只为各种枚举值定义整数常量 例如 INV
  • 将 JSON 字符串列拆分为多列

    我正在寻找一个通用的解决方案来从 JSON 字符串列中提取所有 json 字段作为列 df spark read load path df show 路径 中文件的文件格式是 parquet 样本数据 id json data 1 name
  • 如何制作像 IDE 那样的可停靠表单,而不会使可停靠表单的冻结速度非常缓慢?

    我该如何做 IDE 方法或最终制作基本的停靠方法 而不需要非常缓慢地冻结可停靠窗体的移动 当我在 Delphi 中搜索可停靠表单并发现Zibadian 在程序员天堂上的帖子 首先 Delphi IDE 中的窗口不是 MDI 窗体 而是 SD
  • 如何从对象标签中获取html元素?

    我正在使用对象标签在 html 页面中加载 html 片段 我的代码看起来是这样的 正如预期的那样 页面加载后 一些元素会添加到对象标记之间 我想获取这些元素 但我似乎无法访问它们 我尝试过以下方法 object html object c
  • 如何使用 C# 判断一个数是偶数还是奇数?

    我知道已经有一种方法可以使用模数 判断一个数是偶数还是奇数的最快方法是什么 不过我想知道是否有类似的 C 函数数学偶数 or Math Odd 使用模数是唯一的方法吗 这可能算作弊 但如果你使用 BigInteger 它有一个IsEven
  • vim 如何搜索 URL

    你会如何在 vim 中搜索以下字符串 http my url com a b c 我已经尝试过 就像 非常没有魔法 Vhttp my url com a b c 但它给了我 E492 not an editor command Vhttp
  • 是否有 API 可以检索 Facebook 最近的活动?

    我知道有一个 Graph api url 用于获取最近的墙提要 https graph facebook com me feed access token 但如何获取最近的活动 有什么办法吗 FQL 不是图形 API 也可以工作 我真的不在
  • 如何删除跨度顶部/底部的空白区域? [复制]

    这个问题在这里已经有答案了 This is jsfiddle 我想删除文本顶部和底部的空白区域 我尝试使用行高 但这不是我需要的 我怎样才能做到呢 谢谢 span font size 24px font weight 600 font fa
  • 将 RData 文件转换为脚本文件

    有没有一种直接的方法可以将 RData 文件的功能转换为普通代码文件 R 查看 dump 例如 newEnv lt new env load myFunctions Rdata newEnv dump c lsf str newEnv fi
  • NuGet 无法加载源的服务索引身份验证失败

    从今天开始 由于某种原因 我无法通过 Visual Studio 连接到 NuGet 包管理器 nuget org Unable to load the service index for source https api nuget or
  • 识别并解决 javax.el.PropertyNotFoundException: Target Unreachable

    当尝试像这样在 EL 中引用托管 bean 时 bean entity property 有时一个javax el PropertyNotFoundException Target Unreachable通常在要设置 bean 属性或要调用
  • Android 浏览器中某些按键没有按键事件

    下面的代码在 Chrome Firefox iPhone 甚至 Android 上的第三方浏览器中都能完美运行 但是 当在本机浏览器中运行时 瑞典语键盘上的特殊字符 如 和 的按键事件根本不会被触发 该示例应该只允许用户一次输入一个字符 工
  • Python、SQLite 和线程

    我正在开发一个应用程序 该应用程序将通过 HTTP 从多个位置收集数据 在本地缓存数据 然后通过 HTTP 提供数据 所以我正在看以下内容 我的应用程序将首先创建几个线程 这些线程将按指定的时间间隔收集数据并将该数据本地缓存到 SQLite
  • C# 中读取大端数据的有效方法

    我使用以下代码来读取 BigEndian 信息BinaryReader但我不确定这是否是有效的方法 还有更好的解决办法吗 这是我的代码 some code to initialize the stream value set the len
  • Excel COM add 在启动期间未加载,必须手动添加

    Excel COM 插件在启动期间未加载 每次我都必须手动添加它 检查后文件 gt 选项 gt 加载项 gt 管理 gt COM 加载项 我看到 加载项 处于 已卸载 状态 不知道如何让它在启动时自动加载 这就是为我解决问题的方法 Step
  • 保存枕头图像时如何正确设置 DPI?

    我正在尝试使用Python以编程方式创建图像枕头库但我遇到图像内文本的图像质量问题 我想将生成的图像保存为 PNG 因此我在保存时设置 DPIthis 但我是否保存dpi 72 72 or dpi 600 600 它在视觉上看起来是一样的