2017-10-25 12 views
0

イメージのピクセル行のリストを次の形式で取得した場合、イメージはどのように取得されますか?Python3のピクセル値のリストから画像を作成する方法は?

[ 
    [(54, 54, 54), (232, 23, 93), (71, 71, 71), (168, 167, 167)], 
    [(204, 82, 122), (54, 54, 54), (168, 167, 167), (232, 23, 93)], 
    [(71, 71, 71), (168, 167, 167), (54, 54, 54), (204, 82, 122)], 
    [(168, 167, 167), (204, 82, 122), (232, 23, 93), (54, 54, 54)] 
] 

答えて

1

PILとnumpyのは、あなたの友人はここにある:

from PIL import Image 
import numpy 


pixels = [ 
    [(54, 54, 54), (232, 23, 93), (71, 71, 71), (168, 167, 167)], 
    [(204, 82, 122), (54, 54, 54), (168, 167, 167), (232, 23, 93)], 
    [(71, 71, 71), (168, 167, 167), (54, 54, 54), (204, 82, 122)], 
    [(168, 167, 167), (204, 82, 122), (232, 23, 93), (54, 54, 54)] 
] 

# Convert the pixels into an array using numpy 
array = numpy.array(pixels, dtype=numpy.uint8) 

# Use PIL to create an image from the new array of pixels 
new_image = Image.fromarray(array) 
new_image.save('hello.png') 

EDIT:

この方法を使用してランダムなピクセルの画像を作成するための少しのリストの理解の楽しみ:

from PIL import Image 
import numpy as np 
import random 

def random_img(output, width, height): 
    import random 

    array = np.random.random_integers(0,255, (width,height,3)) 

    array = np.array(array, dtype=np.uint8) 
    img = Image.fromarray(array) 
    img.save(output) 


random_img('a.png', 50, 50) 
+0

ありがとうございました! – Gray

+0

素晴らしい!私のポストを少しリストの理解のために編集すると、ランダムなピクセル値を持つ画像を作ることができます。 – Jebby

+0

偉大な答えですが、大きな解像度ではかなり時間がかかります(ランダムピクセル1)ので、私はそれを最適化しようとするべきです(これまでにやったことはありません)。 私が作った唯一の変更は、リストの理解の代わりに関数width * height *を3回呼び出すことでした。 array = np.random.random_integers(0,255、(幅、高さ、3))。 素晴らしい一日を過ごしてください:) –

0

PILは自分で使用していませんが、PILを使用して実際の画像ファイルを開くことをおすすめします。次いで、前記画像を開くことに関与するAPIおよびオブジェクトを探索し、そのAPIに関連する特定のオブジェクト内にピクセル値がどのように格納されているかを見る。

抽出したRGB値を使用して、有効なPILイメージオブジェクトを作成できます。

編集: 次の記事を参照してください:PILにおける画素値へのアクセス、How do I create an image in PIL using a list of RGB tuples?

追加:https://pillow.readthedocs.io/en/4.3.x/reference/PixelAccess.html

+0

ありがとうございますが、私は既にそれらの投稿を見てきましたが、私はまだ私が持っている値からイメージを作成する方法を理解していません。 getdata()を使用して画像からピクセル値を抽出することができますが、ピクセル値のリストから新しい画像を作成するにはどうすればよいでしょうか? – Gray

関連する問題