gpt4 book ai didi

python 枕头 : Add transparent gradient to an image

转载 作者:行者123 更新时间:2023-11-30 22:49:19 25 4
gpt4 key购买 nike

我需要向图像添加透明渐变,如下图所示,我尝试过:

def test(path):
im = Image.open(path)
if im.mode != 'RGBA':
im = im.convert('RGBA')
width, height = im.size
gradient = Image.new('L', (width, 1), color=0xFF)
for x in range(width):
gradient.putpixel((0 + x, 0), x)
alpha = gradient.resize(im.size)
im.putalpha(alpha)
im.save('out.png', 'PNG')

但这样我只添加了白色渐变。如何更改渐变颜色并控制渐变大小。

我需要如下内容,但没有文字。

this

最佳答案

您的代码实际上按照它所说的那样执行。但是,如果您的图像背景不是黑色而是白色,则图像会显得更亮。以下代码将原始图像与黑色图像合并,这样无论背景如何,都可以获得深色渐变效果。

def test(path):
im = Image.open(path)
if im.mode != 'RGBA':
im = im.convert('RGBA')
width, height = im.size
gradient = Image.new('L', (width, 1), color=0xFF)
for x in range(width):
gradient.putpixel((x, 0), 255-x)
alpha = gradient.resize(im.size)
black_im = Image.new('RGBA', (width, height), color=0) # i.e. black
black_im.putalpha(alpha)
gradient_im = Image.alpha_composite(im, black_im)
gradient_im.save('out.png', 'PNG')

编辑

缩放渐变的方法有多种。以下是一项建议。

def test(path, gradient_magnitude=1.):
im = Image.open(path)
if im.mode != 'RGBA':
im = im.convert('RGBA')
width, height = im.size
gradient = Image.new('L', (width, 1), color=0xFF)
for x in range(width):
# gradient.putpixel((x, 0), 255-x)
gradient.putpixel((x, 0), int(255 * (1 - gradient_magnitude * float(x)/width)))
alpha = gradient.resize(im.size)
black_im = Image.new('RGBA', (width, height), color=0) # i.e. black
black_im.putalpha(alpha)
gradient_im = Image.alpha_composite(im, black_im)
gradient_im.save('out.png', 'PNG')

关于 python 枕头 : Add transparent gradient to an image,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39842286/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com