2016-10-17 12 views
1

私の画像上のピクセルを、すでに作っているよりも濃い緑に変えようとしていますが、+ rgb(0,50,0)を追加しようとしていますが、できないようですそう、助けてくれますか?私は以下の私のコードを入れている、とfreljord2.pngは今、あなたは緑のあなたのイメージをより暗くしたいことを言及GETCOLORを使用してフルな緑の画像(緑、「RGBA」)PythonのピローはピクセルのRGB値を変更しますか?

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') 
+0

あなたはあなたのコードサンプルでは、​​あなたのインデントを修正することはできますか?これはPythonでは非常に重要です。 :-) – physicalattraction

答えて

0

ですが、もし画像の各ピクセル値に50を追加すると、明るく(緑色に)なります。あなたがしたいことは、既存の画像の上に緑色の透明なオーバーレイを配置することです。オリジナルと同じサイズの新しい画像を、追加したい色で、アルファ値で作成して透明度を示してください。次に、マスクを使用して元の画像にその画像を貼り付ける必要があります。

次のコード例は、このトリックを行う必要があります。その結果を以下に示す。あなたはあなたのニーズに合わせて値を少しでも遊べます。

''' 
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) 

オリジナル画像:

Original Amsterdam image

暗い緑の画像:

Darker green image

関連する問題