Python向图像添加额外区域

2024-04-23

所以我有一张包含图像尺寸的表格。有多个不同尺寸的图像(66x66、400x400 等)。我有一个图像示例(原始图像),其尺寸始终为 600x532,该图像上是一种产品(电视、PC 等)。

我必须调整该图像的大小,这不是问题。但如果我按照比例这样做,我会得到类似 66x55 的东西。如果我不按比例这样做,图像看起来就不好看。

所以原稿的背景始终是白色的。有没有办法扩展图像的区域并用白色填充其余部分? 像这样:600x532 -> 600x600 -> 66x66 等等。

它应该像反作物一样。

编辑:我发现,如果我使用 PIL 中的crop(),而不是使用高于实际图像大小的值“最小化”,它会创建我的额外区域。但它会变黑。 知道如何将这个区域填充为白色吗?

EDIT2:我想这与 ImageDraw 有关。

EDIT3:发现 ImageDraw 是解决方案后,我的问题就解决了。请关闭这个。

这是我的解决方案:

import Image, ImageDraw
img1 = Image.open("img.jpg")
img2 = img1.crop((0,0,600,600))
draw = ImageDraw.Draw(img2)
draw.rectangle( (0,532,600,600), fill='white' )
del draw
img2.save("img2.jpg","JPEG", quality=75)

接下来我要做的就是在上面和下面制作额外的作物。所以图片停留在中间。

EDIT4:最终解决方案

img1 = Image.open("img1.jpg")
img2 = img1.crop( (0,-34,600,566) )  
draw = ImageDraw.Draw(img2)
draw.rectangle( (0,0,600,34), fill="white" )
draw.rectangle( (0,566,600,600), fill="white" )
del draw
img2.save("img2.jpg", "JPEG", quality=75)

假设我们使用PIL来处理图像

from PIL import Image

def white_bg_square(img):
    "return a white-background-color image having the img in exact center"
    size = (max(img.size),)*2
    layer = Image.new('RGB', size, (255,255,255))
    layer.paste(img, tuple(map(lambda x:(x[0]-x[1])/2, zip(size, img.size))))
    return layer

您可以调整 PIL 图像对象的大小,例如 img

img.resize((width, height), resample=Image.ANTIALIAS)

因此在 python shell 中,它看起来像

>>> from PIL import Image
>>> img = Image.open('path/to/image')
>>> square_one = white_bg_square(img)
>>> square_one.resize((100, 100), Image.ANTIALIAS)
>>> square_one.save('path/to/result')

PIL 文档和 sorl-thumbnail 3.2.5 中有很好的例子

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

Python向图像添加额外区域 的相关文章

  • 保存的数据带有不需要的引号

    我使用以下代码将数据框导出到 csv data write format com databricks spark csv options delimiter t codec org apache hadoop io compress Gz
  • 为什么我的自定义 JSONEncoder.default() 忽略布尔值?

    我想将字典转换为带有布尔值的 JSON 字符串True值转换为数字1和布尔值False值转换为数字0 我正在使用一个JSONEncoder子类 但它似乎忽略布尔值 import json class MyEncoder json JSONE
  • 根据列中的条件将 Pandas 数据框拆分为多个数据框

    为了为 ML 任务正确准备数据 我需要能够将原始数据帧拆分为多个较小的数据帧 我想要获取上面的所有行 包括 BOOL 列的值为 1 的行 对于每次出现的 1 即 n 个数据帧 其中 n 是 1 出现的次数 数据样本 df pd DataFr
  • 导入错误:无法导入名称 md5

    真的不知道这里发生了什么 我需要在弹性beanstalk上部署我的flask应用程序 但不知何故改变了路径并且无法再运行python application py dotnet info NET Core SDK reflecting an
  • 在 Python 中读取 .docx 文件以查找删除线、项目符号和其他格式

    任何人都可以帮助我在使用 python docx 的 Python 中识别 docx 文件中的段落是否包含带有删除线格式的文本 即它出现但被划掉 或者在开头有一个项目符号点 我正在尝试编写一个脚本来识别文档中的结构并解析内容 到目前为止 我
  • 在Python中解析制表符分隔的文件

    我正在尝试在 Python 中解析一个制表符分隔的文件 其中与行开头分开的 k 个制表符的数字应该放入第 k 个数组中 除了逐行读取并执行简单解决方案将执行的所有明显处理之外 是否有内置函数可以执行此操作 或者有更好的方法 您可以使用the
  • 字典损坏了键的名称 [Python]

    我的问题是 当我输入带重音的输入时 字典会存储不同的键名 它会用字符代码替换重音字符 我是新来的 我接受一切帮助 感谢您的帮助 usr bin python coding utf 8 products try prodNum int raw
  • Snakemake - 无法从输出文件中确定输入文件中的通配符

    我对snakemake很陌生 而且对python也不太熟悉 所以抱歉 这可能是一个非常基本的愚蠢问题 我目前正在构建一个管道来分析一组 bamfilesatlas https bitbucket org phaentu atlas wiki
  • Pyside QPushButton 和 matplotlib 的连接

    我正在尝试使用 matplotlib 开发一个非常简单的 pyside Qt 程序 我希望按下按钮时绘制图表 到目前为止 我可以在构造函数上绘制一些东西 但无法将 Pyside 事件与 matplotlib 连接起来 有没有办法做到这一点
  • 是否可以使用 Ruby 或 Python 发出禁用锚点/引用的有效 YAML?

    是否可以禁用创建锚点和引用 并有效地显式列出冗余数据 PyYAML或者红宝石的Psych引擎 也许我在网上搜索时错过了一些东西 但似乎可用的选项并不多Psych我无法确定是否PyYAML也允许这样做 理由是我必须序列化一些数据并以可读的形式
  • 如何将异步函数传递给 Python 中的线程目标?

    我有以下代码 async some callback args await some function 我需要将它作为目标传递给线程 thread threading Thread target some callback args som
  • 如何重定向到外部404页面Python Flask

    我正在尝试将 404 重定向到外部 URL 如下所示 app route 404 def http error handler error return flask redirect http www exemple com 404 404
  • 屏幕截图中低分辨率文本的 OCR

    我正在编写一个 OCR 应用程序来从屏幕截图图像中读取字符 目前 我只关注数字 我的方法部分基于这篇博文 http blog damiles com 2008 11 basic ocr in opencv http blog damiles
  • 使用 python 从 hive 读取数据时的性能问题

    我在 hive 中有一个表 其中包含 351 837 110 MB 大小 记录 我正在使用 python 读取该表并写入 sql server 在此过程中 从 hive 读取数据到 pandas dataframe 需要很长时间 当我加载整
  • 使用Python有没有一种方法可以在mongodb中进行插入或更新时监听更改

    我正在构建一个小型系统 它从 mongodb 集合中抛出数据 它已经工作正常 但每次进行更改时我都必须重新启动它 我已经有一个监视器可以检测更改并自动重新启动服务器 但我想对 mongodb 更改执行类似的操作 我当前使用 CentOs 5
  • Python 视图与复制错误希望我仅在脚本中使用 .loc

    我正在运行一个很长的脚本 其中有一个数据框df 随着脚本运行 构建和修改df我在命令行中一列又一列地收到此错误 尝试在 DataFrame 的切片副本上设置一个值 尝试 使用 loc row indexer col indexer valu
  • admin.py 用于项目,而不是应用程序

    如何指定项目级别admin py 我前段时间问过这个问题 但由于该问题缺乏活动 我刚刚获得了风滚草奖 gt Project 设置 py admin py 这就是我想要开始工作的 App admin py 我知道该怎么做 例如 admin a
  • Django ORM 是否具有与 SQLAlchemy 的混合属性等效的功能?

    In SQL炼金术 http docs sqlalchemy org en rel 0 7 index html a 混合属性 http docs sqlalchemy org en rel 0 7 orm extensions hybri
  • 无法将项目追加到多处理共享列表

    我正在使用多重处理来为我的应用程序创建子流程 我还在进程和子进程之间共享一个字典 我的代码示例 主要流程 from multiprocessing import Process Manager manager Manager shared
  • Python 正则表达式 findall

    我正在尝试使用 Python 2 7 2 中的正则表达式从字符串中提取所有出现的标记单词 或者简单地说 我想提取其中的每一段文本 p p 标签 这是我的尝试 regex ur u005B1P u005D u005B u002FP u005D

随机推荐

  • python - Flask_simpleldap 不会绑定

    我在用着烧瓶 simpledap https github com admiralobvious flask simpleldap并且正在努力获得绑定连接来执行任何有用的操作 我的 LDAP 服务器是活动目录 精简后的代码如下所示 几乎与这
  • 使用 nginx 代理时在 RStudio 中运行闪亮的应用程序

    我正在尝试使用通过 nginx 代理的 RStudio 服务器来开发一个闪亮的应用程序 当我使用 RStudio 而不是服务器 来运行闪亮的应用程序时 一切正常 但是 当我通过代理 RStudio 运行时 该应用程序出现在 查看器 窗格中
  • Python pickle 不是一对一的:不同的 pickle 给出相同的对象

    有人可以解释一下吗 pickle loads b x80 x03X x01 x00 x00 x00 q x00h x00 x86q x01 pickle loads b x80 x03X x01 x00 x00 x00 q x00X x01
  • Android 猴子跑步脚本

    我正在尝试通过 Monkey runner 命令提示符执行示例 python 程序 但它抛出错误 Can t open specified script file Usage monkeyrunner options SCRIPT FILE
  • 如何解析 WordOpenXML 输出中的 mathML?

    我只想读取用于生成方程的 xml 这是我通过使用获得的Paragraph Range WordOpenXML 但用于方程的部分并不符合MathML我发现Equation微软的MathML 我是否需要使用一些特殊的转换器来获取所需的 xml
  • For 循环有效,但 For Each 无效。为什么?

    在包含 forEach 循环的行上抛出了越界异常 但据我所知 这段代码没有任何问题 for 循环从 char 数组的元素 0 开始并循环直到到达最后一个元素 但是当我使用更长的 for 循环尝试此代码时 即 for int i 0 i lt
  • 更改 maven pom.xml 中传递依赖项的版本

    我一直在尝试覆盖我的一个项目中的传递依赖版本 我在 github 上找到了以下示例项目来进行实验 https github com Richou swagger codegen maven plugin https github com R
  • 求 2 次幂的算法

    我找到了一个小算法来确定一个数字是否是 2 的幂 但没有解释它是如何工作的 到底发生了什么 var potence n gt n n n 1 for var i 2 i lt 16 i if potence i console log i
  • Android ACTION_IMAGE_CAPTURE 与内存中的 EXTRA_OUTPUT

    当我打电话时用相机拍照时 File file new File getFilesDir getAbsolutePath myImage jpg Uri outputFileUri Uri fromFile file cameraIntent
  • $elemMatch 的 MongoDB 索引

    索引帮助页面位于http www mongodb org display DOCS Indexes http www mongodb org display DOCS Indexes没有提到 elemMatch 因为它说要在我的 2M 对象
  • iOS 11:大标题的 UINavigationBar 高度(模仿 Apple Music 应用)

    我试图模仿UINavigationBar由 Apple Music 应用程序使用 日期显示在大标题上方 我知道 Apple Music 应用程序不使用该标准UINavigationBar of ios11 questions tagged
  • 数据框中值之间的距离

    我有一个数据框 其中包含一系列虚拟变量 这些变量指示在另一个事件 a 之前发生的事件类型 e1 e2 我需要知道从类型 e1 和 e2 的每个事件到下一个事件 a 的索引值的距离 我尝试使用显示的数据进行演示 我已经研究了一些解决方案 包括
  • 管道和流程管理

    我正在开发一个用 C 实现的小型 shell tsh 这是一项作业 作业的一部分属于 PIPING 我必须将一个命令的输出通过管道传输到另一个命令 例如 ls l sort 当我运行 shell 时 我在其上执行的每个命令都由它生成的子进程
  • 没有河流的世界地图与 matplotlib / 底图?

    有没有一种方法可以用底图 或者没有底图 如果有其他方法的话 绘制大陆的边界 而不会出现那些烦人的河流 尤其是那段刚果河 连入海口都没有 令人不安 编辑 我打算进一步在地图上绘制数据 就像在底图库 http matplotlib org ba
  • 是否存在 Yahoogroups api?

    我们有 yahoogroups api 吗 我有一个 yahoo 群组 我希望每当我的 RSS 源更新时 都会自动向该群组发布一条消息 其中包含该帖子的链接 那可能吗 不 Yahoo 没有公共 API 团体 如果这样的 API 被开放 雅虎
  • Yii CDBCommand getText 显示 SQL 中的所有变量

    我正在使用 Yii 的 Yii app gt db gt createCommand 来构建 SQL 查询 为了查看 Yii 生成的 SQL 代码 我使用 CDBCommand 的 getText 方法 问题是 当我在包含参数的 SQL 代
  • 如何追踪僵尸对象崩溃?

    我的 iOS 应用程序发生了一些有线崩溃 并且它不是 100 可重现的 从崩溃日志中我可以看到无法识别的选择器 属性访问器 被发送到类型不正确的对象 很可能是僵尸 无论如何 XCode 中是否可以用来查看我是否正在尝试访问僵尸对象 Than
  • 如何存储(和使用)当前鼠标位置?

    存储当前鼠标位置 系统范围 然后 稍后 将鼠标放在该存储点的最佳方法是什么 NSEvent mouseLocation http developer apple com mac library documentation Cocoa Ref
  • Jsoup 解析和嵌套标签

    我正在学习 Jsoup 并有这个 HTML p Content p p Content p p Content p 我使用 Jsoup parse 和文档 select p 来捕获 内容 并且效果很好 但 p Content p p Con
  • Python向图像添加额外区域

    所以我有一张包含图像尺寸的表格 有多个不同尺寸的图像 66x66 400x400 等 我有一个图像示例 原始图像 其尺寸始终为 600x532 该图像上是一种产品 电视 PC 等 我必须调整该图像的大小 这不是问题 但如果我按照比例这样做