相关疑难解决方法(0)

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

我需要拍摄一张图片并将其放置在新生成的白色背景上,以便将其转换为可下载的桌面壁纸.所以这个过程会:

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

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

python image-processing python-imaging-library

63
推荐指数
3
解决办法
7万
查看次数

透视变换如何在PIL中发挥作用?

PIL的变换功能有一个透视模式,需要一个8-tupel的数据,但我无法弄清楚如何转换让我们说这是一个正确的倾斜30度到该tupel.

有人能解释一下吗?

这是它的文档:http://effbot.org/imagingbook/image.htm

python perspective python-imaging-library

40
推荐指数
4
解决办法
2万
查看次数

PIL中的透明PNG结果不透明

我一直在墙上撞了一会儿,所以也许有人可以提供帮助.

我正在使用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)

python png transparent python-imaging-library

23
推荐指数
1
解决办法
1万
查看次数

使用Python Imaging Library(PIL),如何使用alpha通道组合图像而不是另一个图像?

我有两个图像,都有alpha通道.我想将一个图像放在另一个图像上,从而生成带有alpha通道的新图像,就像它们在图层中呈现一样.我想用Python Imaging Library做到这一点,但是其他系统中的建议会很棒,即使原始数学也是一个好处; 我可以使用NumPy.

python image-processing python-imaging-library

14
推荐指数
3
解决办法
2万
查看次数

python PIL - 检查图像是否透明

我正在将图像粘贴到另一个图像上,在查看问题后,我看到为了粘贴透明图像,您需要执行

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方法(有或没有最后一个参数)。

python transparency image python-imaging-library

8
推荐指数
2
解决办法
7072
查看次数

Python PIL:将透明图像混合到另一个上

我需要使用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?

示例图像

python image python-imaging-library

7
推荐指数
1
解决办法
2288
查看次数

在PIL中合并背景与透明图像

我有一个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层不是很好的解决方案.

python python-imaging-library

6
推荐指数
1
解决办法
8499
查看次数

Tkinter,将前景图像叠加在具有透明度的背景图像之上

我有 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 窗口。

python transparency image tkinter

5
推荐指数
1
解决办法
1万
查看次数

在Python中创建水印

我正在尝试弄清楚如何创建这种水印,尤其是位于中心的水印(这不是广告,它只是我想要完成的任务的完美示例):

在此输入图像描述 在此输入图像描述

python watermark imagemagick

4
推荐指数
1
解决办法
8466
查看次数

使用 PIL 粘贴的图像会产生伪影

我有一堆图像,需要在其上放置文本叠加层。我使用 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 中看起来像这样:

覆盖 Gimp

所以我希望看到一些漂亮的黑色文本,而不是这种五颜六色的混乱。

有任何想法吗?我缺少一些 PIL 选项吗?

python png transparency python-imaging-library

3
推荐指数
1
解决办法
1604
查看次数

如何使用 Scikit-image 将透明 png 图像与另一个图像合并

这基本上与此处发布的问题相同:如何使用 PIL 将透明 png 图像与另一个图像合并,但使用 scikit-image 而不是 PIL。我的意思是将 png 粘贴在背景图像的顶部,并保持其透明度。另外,如果真的有办法做到这一点,我想知道哪个更快(PIL 或 scikit-image)。谢谢。

python image-processing python-imaging-library scikit-image

2
推荐指数
1
解决办法
3064
查看次数

如何用枕头中的颜色替换透明

我需要用白色替换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 image python-3.x pillow

1
推荐指数
2
解决办法
1300
查看次数