当前位置: 首页 > 面试题库 >

如何在Python中使用PIL将图像合成到另一个图像?

范飞翰
2023-03-14
问题内容

我需要拍摄图像并将其放置在新的生成的白色背景上,以便将其转换为可下载的桌面墙纸。因此该过程将进行:

  1. 生成具有1440x900尺寸的新全白图像
  2. 将现有图像放在顶部居中
  3. 另存为单个图像

在PIL中,我看到了该ImageDraw对象,但是没有任何迹象表明它可以将现有的图像数据绘制到另一个图像上。任何人都可以推荐的建议或链接?


问题答案:

这可以通过Image实例的paste方法来完成:

from PIL import Image
img = Image.open('/path/to/file', 'r')
img_w, img_h = img.size
background = Image.new('RGBA', (1440, 900), (255, 255, 255, 255))
bg_w, bg_h = background.size
offset = ((bg_w - img_w) // 2, (bg_h - img_h) // 2)
background.paste(img, offset)
background.save('out.png')

可以在Nadia
Alramli的PIL教程中了解
此方法以及其他许多PIL技巧



 类似资料:
  • 问题内容: 我正在使用python和图像模块(PIL)处理图像。 我想将图像对象的原始位流存储到redis,以便其他人可以使用nginx和httpredis直接从redis读取图像。 因此,我的问题是如何获取Image对象的原始位并将其存储到Redis中。 问题答案: 使用PIL 1.1.7,redis-2.7.2 pip模块和redis-2.4.10,我可以使它工作: 我发现这是不可靠的,因此此

  • 问题内容: 我是Rails编程的初学者,试图在页面上显示许多图像。有些图像要放在其他图像之上。为简单起见,假设我要一个蓝色正方形,在蓝色正方形的右上角有一个红色正方形(但在角落不紧)。由于性能问题,我试图避免进行合成(使用ImageMagick等)。 我只想相对于彼此放置重叠的图像。 举一个更困难的例子,想象一下将里程表放在更大的图像中。对于六位数字,我将需要合成一百万个不同的图像,或者即时进行处

  • 问题内容: 我刚刚使用Python图像库(PIL)进行了一些图像处理,这是我之前发现的用于执行图像的傅立叶变换的文章,但是我无法使用save函数。整个代码运行良好,但不会保存生成的图像: 我得到的错误如下: 如何使用Pythons PIL保存图像? 问题答案: 已解决有关文件扩展名的错误,您可以使用(不带点)或将输出名称与扩展名一起传递。现在要处理该错误,您需要在频域中适当地修改数据以将其保存为整

  • 我在一个类中有一个imageView,在单击imageView时,会出现一个对话框,它有两个选项,可以从相机中获取图像,也可以打开设备的图像库。我想将图像从一个类发送到另一个类,这样它就可以出现在ImageView中。我搜索了很多小时,但我只得到关于从一个类到另一个类的文本数据发送。谁能告诉我从一个类到另一个类的图像发送? 这是来自sender类的代码,它将获取图像。 谢谢你的帮助

  • 问题内容: 我要求压缩文件大小小于500kb的所有已上传图像,我已经在google上搜索了,我只能看到: 如果我采用这种方法,则必须检查压缩后图像是否小于500kb,如果不是,则选择较低的质量和尺寸。 有更好的方法吗? 问题答案: JPEG压缩事先无法预测。您所描述的方法,压缩和测量并重试,是我知道的唯一方法。 您可以尝试压缩具有不同质量设置的许多典型图像,以了解最佳起点,以及猜测设置的更改将如何

  • 问题内容: 我刚刚在三个月前开始编程,这里的问题是- 如何将一个或图形复制到另一个或图形。 我用过了 - 但是由于缺乏知识,我被困在这里。请帮忙。 问题答案: 首先查看AWT中的绘画和Swing 和执行自定义绘画,以获取有关绘画工作原理的更多信息。 永远不要使用,这只是个坏主意,不会给您带来麻烦。 一般来说,应避免直接调用,而应使用或。这将禁用正常绘制过程中固有的双重缓冲,这可能会导致 这假定已经