【问题标题】:Python Pillow Changing RGB Value Of Pixels?Python Pillow 改变像素的 RGB 值?
【发布时间】:2016-10-17 13:35:46
【问题描述】:

我正在尝试将图片上的像素更改为比我已经制作的更深的绿色,我正在尝试添加 + rgb(0,50,0) 但我似乎无法做到这样做,你能帮忙吗?我已经把我的代码放在下面了,freljord2.png 现在只是一个使用 getcolor(green, "RGBA") 的全绿色图像

im = Image.open('freljord2.png')
#one_pixel = im.getpixel((0, 0))
#one_pixel[1] = 0;
#im.save('freljord3.png')


(0, 0, 0, 0)
for x in range(0):
for y in range(0):
    im.putpixel((x, y), (210, 210, 210))
for x in range(560):
    for y in range(557):
    print("hi")
    hello = ImageColor.get(00B200)
    im.putpixel((x, y), )
im.getpixel((0, 0))
(210, 210, 210, 255)
im.getpixel((0, 50))
(169, 169, 169, 255)
im.save('freljord2.png')

【问题讨论】:

  • 你能修复你的代码示例中的缩进吗?这在 Python 中非常重要。 :-)

标签: python colors rgb pillow


【解决方案1】:

您提到您想让您的图像更深绿色,但如果您将图像的每个像素值添加 50,您只会使其更亮(更绿)。您要做的是在现有图像上放置一个绿色透明覆盖层。您应该为其创建一个与原始图像大小相同的新图像,并使用您要添加的颜色和一个 alpha 值,该值指示它的透明度。接下来,您需要使用蒙版将该图像粘贴到原始图像上。

下面的代码示例应该可以解决问题。结果如下所示。您可以根据自己的需要调整一些值。

'''
Created on Oct 23, 2016

@author: physicalattraction
'''

import os.path
from PIL import Image


def get_img_dir() -> str:
    '''
    Return the full path to the image directory

    :return: string
    '''
    pkg_dir = os.path.dirname(__file__)
    img_dir = os.path.join(pkg_dir, '..', '..', 'img')
    return img_dir


def open_img(img_name: str) -> Image:
    '''
    Open the given file form the image directory

    :param img_name: Name including extension of the image
    :return: Image object
    '''
    img_dir = get_img_dir()
    full_img_path = os.path.join(img_dir, img_name)
    return Image.open(full_img_path)


def save_img(img: Image, img_name: str):
    '''
    Save the given image to the image directory

    :param img: Image object
    :param img_name: Name including the extension of the image
    '''
    img_dir = get_img_dir()
    full_img_path = os.path.join(img_dir, img_name)
    img.save(full_img_path)


def overlay(img: Image, overlay_color: tuple):
    '''
    Place an overlay over an existing image

    :param img: Image opened with PIL.Image
    :param overlay_color: four-tuple with color to add to your image
    '''
    assert len(overlay_color) == 4, 'Overlay color shall be a 4-tuple'

    img_overlay = Image.new(size=img.size, color=overlay_color, mode='RGBA')
    img.paste(img_overlay, None, mask=img_overlay)

    color_string = '_'.join([str(c) for c in overlay_color])
    filename = 'amsterdam_{color}.jpg'.format(color=color_string)
    save_img(img, filename)


if __name__ == '__main__':
    ams = open_img('amsterdam.jpg')
    green = (0, 50, 0, 128)
    overlay(ams, green)

原图:

深绿色图像:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-25
    • 2018-06-25
    相关资源
    最近更新 更多