我需要拍摄一张图片并将其放置在新生成的白色背景上,以便将其转换为可下载的桌面壁纸.所以这个过程会:
在PIL中,我看到了ImageDraw对象,但没有任何迹象表明它可以将现有图像数据绘制到另一个图像上.任何人都可以推荐的建议或链接?
PIL的变换功能有一个透视模式,需要一个8-tupel的数据,但我无法弄清楚如何转换让我们说这是一个正确的倾斜30度到该tupel.
有人能解释一下吗?
我一直在墙上撞了一会儿,所以也许有人可以提供帮助.
我正在使用PIL打开一个带有透明背景和一些随机黑色涂鸦的PNG,并尝试将其置于另一个PNG(没有透明度)的顶部,然后将其保存到第三个文件.
它最后都是黑色的,这很刺激,因为我没有说它是黑色的.
我已经使用其他帖子中的多个提议修复对此进行了测试.图像以RGBA格式打开,它仍然搞砸了.
此外,该程序应该处理各种文件格式,这就是我使用PIL的原因.讽刺的是,我试过的第一种格式都是搞砸了.
任何帮助,将不胜感激.这是代码:
from PIL import Image
img = Image.open(basefile)
layer = Image.open(layerfile) # this file is the transparent one
print layer.mode # RGBA
img.paste(layer, (xoff, yoff)) # xoff and yoff are 0 in my tests
img.save(outfile)
Run Code Online (Sandbox Code Playgroud) 我有两个图像,都有alpha通道.我想将一个图像放在另一个图像上,从而生成带有alpha通道的新图像,就像它们在图层中呈现一样.我想用Python Imaging Library做到这一点,但是其他系统中的建议会很棒,即使原始数学也是一个好处; 我可以使用NumPy.
我正在将图像粘贴到另一个图像上,在查看此问题后,我看到为了粘贴透明图像,您需要执行
background = Image.open("test1.png")
foreground = Image.open("test2.png")
background.paste(foreground, (0, 0), foreground)
Run Code Online (Sandbox Code Playgroud)
使用正常图像,您应该这样做
background = Image.open("test1.png")
foreground = Image.open("test2.png")
background.paste(foreground, (0, 0)) // difference here
Run Code Online (Sandbox Code Playgroud)
我的问题是,如何检查图像是否透明,以便确定如何使用该paste方法(有或没有最后一个参数)。
我需要使用Pythons PIL Library将图像混合到另一个图像上.
如下图所示,我的两个源图像是A和B.当我这样做时:
imageA.paste(imageB, (0, 0), imageB)
Run Code Online (Sandbox Code Playgroud)
我得到了C作为结果,但灰色背景顶部的部分现在是透明的.图像D是我在Photoshop中将B放在A上时得到的,是我需要用PIL实现的.
我究竟做错了什么?如何在PIL中用A组合B来获得D而不是C?

我有一个png图像作为背景,我想为这个背景添加透明网格,但这不能按预期工作.在我应用透明网格的地方,背景图像会转换为透明.
我在做:
from PIL import Image, ImageDraw
map_background = Image.open(MAP_BACKGROUND_FILE).convert('RGBA')
map_mesh = Image.new('RGBA', (width, height), (0, 0, 0, 0))
draw = ImageDraw.Draw(map_mesh)
# Create mesh using: draw.line([...], fill=(255, 255, 255, 50), width=1)
...
map_background.paste(map_mesh, (0, 0), map_mesh)
Run Code Online (Sandbox Code Playgroud)
但结果是:

如果仔细观察(在图形程序中用作无背景),您可以看到棋盘图案.透明线条使得背景图层在两个层都满足的位置也是透明的.但我只想在背景上添加透明线.
我可以解决它:
map_background.paste((255,255,255), (0, 0), map_mesh)
Run Code Online (Sandbox Code Playgroud)
但是当我对不同的线条使用不同的颜色时,我必须为这个过程制作每种颜色.如果我有100种颜色,那么我需要100层不是很好的解决方案.
我有 2 张图片,png 格式。第二个图像,是具有透明背景的形状。
第一张图:

第二张图:

我无法在给定坐标 (x,y) 的第一个图像上制作第二个图像,而第一个图像通过第二个图像的透明区域可见。
想要的结果:

import Tkinter
import Image, ImageTk
# open an image
head = Image.open('background2.png')
hand = Image.open('foreground2.png')
root = Tkinter.Tk() # A root window for displaying objects
head.paste(hand,(20,20))
# Convert the Image object into a TkPhoto object
tkimage = ImageTk.PhotoImage(head)
root.mainloop() # Start the GUI
Run Code Online (Sandbox Code Playgroud)
显示一个空的 tk 窗口。
我有一堆图像,需要在其上放置文本叠加层。我使用 GIMP(具有透明度的 PNG)创建了叠加层,并尝试将其粘贴到其他图像的顶部:
from PIL import Image
background = Image.open("hahn_echo_1.png")
foreground = Image.open("overlay_step_3.png")
background.paste(foreground, (0, 0), foreground)
background.save("abc.png")
Run Code Online (Sandbox Code Playgroud)
然而,我得到的不是在顶部显示漂亮的黑色文本,而是:
overlay.png 在 Gimp 中看起来像这样:
所以我希望看到一些漂亮的黑色文本,而不是这种五颜六色的混乱。
有任何想法吗?我缺少一些 PIL 选项吗?
这基本上与此处发布的问题相同:如何使用 PIL 将透明 png 图像与另一个图像合并,但使用 scikit-image 而不是 PIL。我的意思是将 png 粘贴在背景图像的顶部,并保持其透明度。另外,如果真的有办法做到这一点,我想知道哪个更快(PIL 或 scikit-image)。谢谢。
我需要用白色替换png图像的透明层。我试过了
from PIL import Image
image = Image.open('test.png')
new_image = image.convert('RGB', colors=255)
new_image.save('test.jpg', quality=75)
Run Code Online (Sandbox Code Playgroud)
但透明层变成黑色。有人可以帮助我吗?
python ×12
image ×4
transparency ×3
png ×2
imagemagick ×1
perspective ×1
pillow ×1
python-3.x ×1
scikit-image ×1
tkinter ×1
transparent ×1
watermark ×1