pil对图像加透明 python_关于python:如何使用PIL将透明png图像与另一个图像合并...
我有一个透明的png图像"foo.png"
我打开了另一张图片
im = Image.open("foo2.png");
现在我需要的是将foo.png与foo2.png合并。
(foo.png包含一些文本,我想在foo2.png上打印该文本)
不要在python的命令末尾使用;:这很难看......
我会记住这一点,谢谢!!
import Image
background = Image.open("test1.png")
foreground = Image.open("test2.png")
background.paste(foreground, (0, 0), foreground)
background.show()
.paste()的第一个参数是要粘贴的图像。第二个是坐标,秘密酱是第三个参数。它表示将用于粘贴图像的蒙版。如果传递具有透明度的图像,则Alpha通道将用作遮罩。
检查文档。
哇 !!这样可行 !!谢谢
我错过了秘密酱,谢谢! :d
要确保前景在所有情况下都包含透明度,请使用foreground.convert('RGBA')作为mask参数。
你救了我,坦白
谢谢。我太缺少第三个参数了。
该死的。那是一些启示。
哇!这个解决方案在两周前立刻就做到了,但现在我已经完全忘记了它,现在我再次看到它,它再次成功!
我得到了ValueError: bad transparency mask
根据您的版本,您可能必须安装Python Image Library,并且:'来自PIL import Image`
太棒了,你可以使用图像作为面具。但我可以像svg一样使用矢量图像吗?
秘制酱很好吃
TypeError: paste() got an unexpected keyword argument 'alpha'
@DenizOzger要修复ValueError: bad transparency mask,请使用bg.paste(fg, (0, 0), fg.convert('RGBA'))
感谢您指出有关掩码的信息以及文档链接。
当背景图像还包含透明度时,Image.paste无法正常工作。您需要使用真正的Alpha Compositing。
Pillow 2.0包含一个执行此操作的alpha_composite函数。
background = Image.open("test1.png")
foreground = Image.open("test2.png")
Image.alpha_composite(background, foreground).save("test3.png")
编辑:两个图像都必须是RGBA类型。因此,如果它们是调色板等,你需要调用convert('RGBA')。如果背景没有alpha通道,那么你可以使用常规粘贴方法(应该更快)。
我只是使用paste()将一个半透明图像覆盖在另一个上,使用PIL,它按预期工作。它以什么方式不如预期的那样起作用?
@PeterHansen,当背景图像也包含透明度时,paste()无法按预期工作。
@PeterHansen有例子:github.com/python-pillow/Pillow/issues/
@homm谢谢。那是很久以前我对我的尝试没有记忆。似乎我确实错过了你引用的关于背景图像也具有透明度的部分。
我得到ValueError: image has wrong mode
我得到ValueError: image has wrong made以及@DenizOzger
这对我有用,而粘贴是在我的背景中打出一个"透明孔"。
正如olt已经指出的那样,当源和目标都包含alpha时,Image.paste无法正常工作。
请考虑以下情形:
两个测试图像,都包含alpha:
layer1 = Image.open("layer1.png")
layer2 = Image.open("layer2.png")
像这样使用Image.paste合成图像:
final1 = Image.new("RGBA", layer1.size)
final1.paste(layer1, (0,0), layer1)
final1.paste(layer2, (0,0), layer2)
产生下面的图像(重叠的红色像素的alpha部分完全取自第二层。像素未正确混合):
使用Image.alpha_composite合成图像如下:
final2 = Image.new("RGBA", layer1.size)
final2 = Image.alpha_composite(final2, layer1)
final2 = Image.alpha_composite(final2, layer2)
生成以下(正确)图像:
感谢截图!真有帮助!
但是alpha_composite无法设置偏移量,您是否介绍完全替换paste函数的示例?
我猜你必须创建一个与garget图像大小相同的新空图像,将图层粘贴到正确的位置,然后使用alpha_compositing将新图像混合到目标图像上。
也可以使用混合:
im1 = Image.open("im1.png")
im2 = Image.open("im2.png")
blended = Image.blend(im1, im2, alpha=0.5)
blended.save("blended.png")
这个对我来说很有意义。图像必须具有完全相同的大小,但没关系。粘贴功能并没有完全削减它...
'ValueError:图片不匹配'
可能,它们具有不同的尺寸。您可能需要缩放或裁剪其中一个。
@Schtze看到nvd的评论,因为他/她没有ping(使用@blahblah)你
def trans_paste(bg_img,fg_img,box=(0,0)):
fg_img_trans = Image.new("RGBA",bg_img.size)
fg_img_trans.paste(fg_img,box,mask=fg_img)
new_img = Image.alpha_composite(bg_img,fg_img_trans)
return new_img
嗨,您可以为答案添加更多背景吗?否则,请求者不太可能了解其背后的"原因"。
有一个类似的问题,很难找到答案。使用以下功能可以将具有透明度参数的图像粘贴到特定偏移处的另一个图像上。
import Image
def trans_paste(fg_img,bg_img,alpha=1.0,box=(0,0)):
fg_img_trans = Image.new("RGBA",fg_img.size)
fg_img_trans = Image.blend(fg_img_trans,fg_img,alpha)
bg_img.paste(fg_img_trans,box,fg_img_trans)
return bg_img
bg_img = Image.open("bg.png")
fg_img = Image.open("fg.png")
p = trans_paste(fg_img,bg_img,.7,(250,100))
p.show()
ValueError: images do not match
pil对图像加透明 python_关于python:如何使用PIL将透明png图像与另一个图像合并...相关推荐
- pil对图像加透明 python_使用Python图像处理库Pillow处理图像文件
文/江红 本文来源<Python程序设计与算法基础教程(第2版)-微课版> 本案例通过使用Python图像处理库Pillow,帮助读者进一步了解Python的基本概念:模块.对象.方法和 ...
- image pil 图像保存_如何利用python中的PIL库做图像处理?
自从这个世界上出现了Python编程,一切都好像有了新的思路与进展,比如人工智能,还有我们常用的PS,你可知道Python也可以做图像处理,用的就是PIL库,还没有用过的,还没有发现的,还没有实现过的 ...
- csv加header python_用python处理csv格式文件
用python处理csv格式文件 在各种平台上获取数据时,我们常常获得的是csv格式的文件.csv格式是一种逗号分隔值的文件格式,它并不是非常reader-friendly.所幸,python标准库中 ...
- python3图像加高斯噪声
python3图像加高斯噪声 高斯噪声 图像噪声 高斯定理 python3图像加高斯噪声 参考 高斯噪声 高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声.常见的高斯噪声包括起伏噪声. ...
- python展示两幅图_Tkinter,并排显示两幅图像
我正在尝试使用Tkinter将两个BMP图像并排显示.一旦打开第二个图像,第一个图像应该重新定位到左侧,而第二个图像将自身定位到右侧.当我尝试这样做时,另一个图像丢失或被替换.我该怎么做呢?另外,我的 ...
- 【Python CUDA版】河北工业大学计算机图像处理实验二:图像直方图及灰度变换
一.实验目的与要求 1.掌握图像灰度直方图的概念及其计算方法,编写灰度直方图统计程序. 2.通过对图像直方图的分析,学习应用直方图法解决诸如图像二值化等具体问题. 3.熟悉直方图均衡化的计算过程及其应 ...
- 使用Python,OpenCV制作全透明的logo水印,对图像添加水印
使用Python,OpenCV制作全透明的logo水印,对图像添加水印 1. 效果图 2. OpenCV自己制作一个logo(完全不透明的) 3. 制作水印图源码 4. 添加水印源码 5. 思考: 参 ...
- python使用openCV图像加载(转化为灰度图像)、Canny边缘检测器检测图像的边缘(Detect Edges)
python使用openCV图像加载(转化为灰度图像).Canny边缘检测器检测图像的边缘(Detect Edges) 目录
- python使用openCV图像加载(转化为灰度图像)、使用filter2D函数对图像进行锐化(Sharpen Images)
python使用openCV图像加载(转化为灰度图像).使用filter2D函数对图像进行锐化(Sharpen Images) 目录
最新文章
- java 数字转26个字母和26个字母转数字
- 招青年博士,年薪70-80万,200万以上补贴,直聘博导!苏州大学
- SecureCrt使用技巧
- 中国全装修行业发展形势及投资决策建议报告2022版
- 【数据结构】顺序栈与链表栈
- 3、SpringBoot整合MyBatis注解版及配置文件版
- Struts2之类型转换
- Windows下文件名或目录的简写
- c语言贪吃蛇运行代码,刚学C语言,想写一个贪吃蛇的代码
- Rose与PowerDesigner:两款建模工具对比分析比较
- Xcode查看CoreData的SQL语句
- 在WSL2上运行nVIDIA Nsight
- 数据库系统工程师(软考)
- Openproj 在64位操作系统报错errno=193
- @SpringBootTest Canot resolve symbol ‘SpringBootTest‘问题解决
- POI excel 单元格换行
- vue实现购物车动画
- Word中的插入页眉 ?Word中页眉横线如何删除?
- 全国计算机等级考试四级笔试样卷网络工程师
- ArrayList的add方法详解——让我们好好看看一个元素是如何插入到ArrayList集合当中(源码级别)