python 枕头 : Add transparent gradient to an image

标签 python python-imaging-library

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

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/

相关文章:

python - 使用 kivy 和 python 返回屏幕管理器时未设置焦点

python - 在Python中使用string.strip()提取特定列

python - 从另一个类方法调用类方法或常规方法之间的区别

python - 根据亮度/亮度对图像文件进行排序

python - 从套接字客户端向套接字服务器发送PIL图像对象

python - 为什么PIL不能修改灰度BMP图像数据?

python - 将注释的 Python 脚本包含到 Sphinx 生成的文档中

python - mysql 查询函数在 python shell 中工作,但在 python 中运行时出现 ImproperlyConfigured 错误

Python截取屏幕截图并将其保存到缓冲区

python - 获取 "' NoneType' 对象没有属性 'items'“PIL 库错误