如何使用 PIL 从一张图像中裁剪并粘贴到另一张图像中?

发布于 2024-11-02 12:20:49 字数 334 浏览 9 评论 0原文

使用 PIL,我尝试从图像中复制一个矩形,然后将其粘贴到另一个图像中。这是我的代码:

import Image
ii = Image.open("ramza.png")
box = (70, 70, 30, 30)
region = ii.crop(box)
io = Image.open("template.png")
io.paste(region, box)
io.save("output.png")

我收到此错误:

ValueError:图像不匹配

你们有人知道解决这个问题的方法吗?

With PIL, I am trying to copy a rectangle out of an image, and paste it into another. This is my code:

import Image
ii = Image.open("ramza.png")
box = (70, 70, 30, 30)
region = ii.crop(box)
io = Image.open("template.png")
io.paste(region, box)
io.save("output.png")

And I am getting this error:

ValueError: images do not match

Do any of you know a fix to this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

执手闯天涯 2024-11-09 12:20:49

PIL 裁剪框定义为像素坐标的 4 元组:(左、上、右、下)

要修复代码以获得 30x30 裁剪:

box = (70, 70, 100, 100)

分解为组件:

x, y, w, h = (70, 70, 30, 30)
box = (x, y, x + w, y + h)

A PIL crop box is defined as a 4-tuple of pixel coordinates: (left, upper, right, lower).

To fix your code to get a 30x30 crop:

box = (70, 70, 100, 100)

Broken down into components:

x, y, w, h = (70, 70, 30, 30)
box = (x, y, x + w, y + h)
維他命╮ 2024-11-09 12:20:49

对于未来的访问者:如果 pastebox 参数包含 float 而不是 int,也可能会出现此错误s。

For future visitors: this error may also come up if the box argument to paste contains floats instead of ints.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文