0 寫在前面
對圖像入門一點,或者看過一些兒時低像素任天堂遊戲的小夥伴們大概對像素點構成圖片有一定認知,本篇將用Excel來表達這一思路,如下原圖:
在Excel中可以表示如下:
可以看到這裏將Excel中的每個格子當作一個像素點,每個格子裏面是每個像素點的rgb值。具體如何做到見下文。
1 現將原始jpg轉成文本形式
爲了方便就處理jpg格式的圖像,這裏使用python語言,如下:
## 讀取圖像像素RGB值
from PIL import Image
imload= Image.open('test.jpg')
im=imload.convert("RGB")
width,height=im.size
demo=open('rgb.txt','a')
for y in range(height):
for x in range(width):
rgb=im.getpixel((x,y))
rgb=str(rgb)
demo.write(rgb[1:-1]+"\t")
demo.write("\n")
demo.close()
將原始圖像改名爲test.jpg再運行上述程序就會生成一個rgb.txt
2 使用Excel打開文本
將第一步生成的rgb.txt直接用Excel打開,打開時會彈出一些轉換事項,直接下一步即可,注意需要調整格子的大小使每個格子呈現正方形以便實現較好的效果,此處演示略。
3 使用VBA還原原始jpg
VBA就是Excel裏面的宏,此時可以新建一個Set_RGB宏,複製以下代碼,注意更改最大列標,以及去掉"//"在內的註釋,如下:
Sub Set_RGB()
Dim r As Range,arr
For Each r In Range("A:xxx") //xxx爲最大列標,點擊一個格子然後ctrl+方向右鍵就能跳到最大列
arr = Split(R,",")
r.Interior.Color = RGB(CInt(arr(0)),CInt(arr(1)),CInt(arr(2)))
Next
End Sub
然後運行,可能會出現下標越界等情況,不用管它,直接回到excel就會發現已經生成,然後就能見到第0節中的效果,此時另存爲Excel文件並保存宏就可以展現給別人看啦。