2016-05-29 5 views
1

Python Imaging Libraryを使用してグレースケール画像を開き、すべてのピクセル値を同じサイズの別の画像変数にコピーして保存しました。今度は、イメージビューアで新しいイメージを開くと、それは赤く見えます。私はImage.new()メソッドを使用していますが、 "white"と "black"の引数は同じ赤い出力を伴います。Python Imaging Libraryによって画像が赤くなります

私のコード:(500×500に縮小)

from PIL import Image 
import math 

def run(): 
    im = Image.open("hrabowski.jpg") 
    pix = im.load() 
    print im.size 
    # print pix[0, 1] 

    im2 = Image.new("RGB", (2400, 2400)) 

    for i in range(im.size[0]): 
     for j in range(im.size[0]): 
      im2.putpixel((i, j), pix[i, j]) 

    im2.save("hrabowski-2400-2400.jpg") 

オリジナル画像:

enter image description here

パイソン500×にスケールダウン私のコード(の出力500):

enter image description here

私が間違っていることを教えてもらえますか?

答えて

2

問題は、3つのチャンネルを持つRGB画像を作成することです。したがって、1つのピクセル値は1つだけでなく3つの値で構成されます(それぞれのチャネルの元の画像のグレー値を使用します)。

私はそれに応じてコードを変更しました。

私は、あなたが達成したいことを達成するためのより良い方法があると確信しています。通常、1つのピクセルをループする必要はありませんが、後になっているかどうかはわかりません。

from PIL import Image 
import math 

def run(): 
    im = Image.open("ZHiG0.jpg") 
    pix = im.load() 
    print im.size 
    # print pix[0, 1] 

    im2 = Image.new("RGB", (2400, 2400)) 

    for i in range(im.size[0]): 
     for j in range(im.size[0]): 
      im2.putpixel((i, j), (pix[i, j],pix[i, j],pix[i, j])) 

    im2.save("ZHiG0-2400-2400.jpg") 
run() 
関連する問題