2016-12-25 75 views
2

我有一個數組64*6401組成。我如何將這個數組轉換成圖像並保存?將陣列轉換爲圖像

from PIL import Image 
img = Image.fromarray(data , 'RGB') // 
img.save('my.png') 
img.show() 

「卸下RGB不給我預期的結果全部爲1的陣列,也給了我黑色的」

上面的代碼是給我的錯誤,我無法將它轉換,如何將它轉換,如果我要較低分辨率圖像即16*16

回答

2
from PIL import Image 

import random 
data = [random.randint(0, 1) for i in range(64 * 64)] 

img = Image.new('1', (64, 64)) 
img.putdata(data) 
img.save('my.png') 
img.show() 
0

from PIL import Image 
 
import numpy as np 
 
from random import randint 
 

 

 
# create random array 
 
def create_arr(width, height): 
 
    bin_array = np.zeros((width, height), 'uint8') 
 
    for x in xrange(0, width): 
 
     for y in xrange(0, height): 
 
      bin_array[x, y] = randint(0, 1) 
 
    return bin_array 
 

 
# write array to img 
 
def create_img(width, height, bin_array): 
 
    rgb_array = np.zeros((width, height, 3), 'uint8') 
 
    for x in xrange(0, width): 
 
     for y in xrange(0, height): 
 
      rgb_array[x, y, 0] = bin_array[x, y] * 255 #R 
 
      rgb_array[x, y, 1] = bin_array[x, y] * 255 #G 
 
      rgb_array[x, y, 2] = bin_array[x, y] * 255 #B 
 

 
    img = Image.fromarray(rgb_array) 
 
    img.save('img.jpeg') 
 

 
# create array 
 
bin_array = create_arr(64, 64) 
 
# write bin_array to img 
 
create_img(64, 64, bin_array)