Udemy Course Multithreading, Concurrency & Performance 9
一張照片圖檔是由許多像素(pixels)組成
每個像素又由4bites的ARGB顏色組成
A:Alpha(transparency),其他RGB就是紅綠藍
調整RGB component就能調整像素顏色
亦即每個像素都有各自的Red Green Blue的組成比例(0~255)
例如R:255 G:255 B:255 則該像素看起來會變成白色
講師有提供以下照片
接著嘗試用Java將上述白花的部分也變成紅(粉紅)花色
將以上照片放入resources內
開始撰寫改寫顏色的Java程式:
但是在那之前先理解部分Java如何控制像素ARGB這個4bites
首先是進位表示式:
ARGB單位像素可以使用同樣4bites的int型別處理
int型別的變(參)數在二進位下完成個別RGB的控制
以下用16進制給予int型別的變數值範例參考:
<<或是>>表示二進位下移位(ex:00000101 <<2會變成00010100)
然後後面範例會使用到|=表示式
例如int a=4
在二進位下a可以長這樣:0100
當執行a|=3
3(在二進制下是0011)
|=在二進制位數有1的取代
最終a在二進制下變成0111
正戲(處理製作像素的程式):
1.先建立處理像素int方法(底下rgb & 16進位數在二進制下同位數為1才算1)
理解以上方法後
再來撰寫讀圖檔的部分:
另外要將結果填入指定位置像素rgb要在撰寫以下:
然後建立替換像素顏色的Method:
接著最後就是依據位置呼叫上述Method的Method:
在單一Thread執行處理的Method如下:
最後就是Main裡面呼叫上述Method:
嘗試執行後refresh看到:
以上所有程式碼:
以上是先以單一Thread處理這個像素轉換
接下來就要改造成Multi-Threads
(之後專案會放自己github內)