# coding: Shift_JIS from PIL import Image image = Image.open('yamin2.jpg') # Can be many different formats. #print (image.mode) # RGB #print (image.size) # (75, 100) pix = image.load() width, height = image.size #print (width, height) # 75 100 print ('module vram_w75h100 (a,d);') print (' input [12:0] a; // 100 * 75 = 7500 pixels -> 8k -> 13-bit address') print (' output [11:0] d; // rrrr_gggg_bbbb') print (' wire [11:0] rom [0:7499];') print (' assign d = rom[a];') n = 0 for j in range(height): for i in range(width): r, g, b = pix[i,j] # take higher 4-bit for each color: rrrrggggbbbb p = ((r << 4) & 0xf00) + \ ((g << 0) & 0x0f0) + \ ((b >> 4) & 0x00f) print (' assign rom[13\'d{}'.format(n)+'] = 12\'h{:03x}'.format(p)+';') n += 1 print ('endmodule'); # モード 説明 # 1 1bit マスクに使用、論理演算が可能 # L 8bit グレイスケール # P パレットモード # RGB 8bit x 3 # RGBA 8bit x 4 透明度(アルファ)付き # CMYK 8bit x 4 印刷関連でよく使われる # YCbCr 8bit x 3 ビデオ関連でよく使われる # HSV 8bit x 3 pillowのみ # RGBa アルファチャンネルでRGB値を乗算 # LA アルファチャンネルでL値を乗算 # I 32bit 整数 # F 32bit 浮動少数