我如何1位圖像轉換爲使用C#的8位圖像?應該使用什麼顏色矩陣?你能提供樣品或鏈接嗎?轉換1位圖像到8位
2
A
回答
1
3
聲明:我不知道C#,但我已經做了太多的C/C++圖像處理,所以我不能通過回答 - 我會用C來回答,因爲我認爲C#有一個類似的語法。
兩個1位(兩種顏色)和8位(256色)圖像具有的調色板。但是將1bit轉換爲8bit轉換很容易 - 因爲不涉及量化,只是上採樣。
首先,你需要選擇(或進口)的1位圖像的調色板的兩種顏色。如果你沒有,我建議使用黑色(0x000000FF)和白色(0xFFFFFFFF)爲清晰(注意:兩種顏色都是RGBA,我認爲windows使用ABGR)。這將是你的'調色板'。
然後,每個顏色映射到調色板 - 輸入圖像將不得不width * height/8
字節。每個字節代表八個像素。因爲我不知道你在bittwiddling的專業知識做(即我不想迷惑你,我不希望你盲目複製和粘貼代碼,你已經被授予的互聯網絡),我會保持這個答案簡單。
// Insert your image's attributes here
int w = image.width;
int h = image.height;
// Data of the image
u8* data = image.data;
/*
* Here, you should allocate (w * h) bytes of data.
* I'm sure C# has ByteArray or something similar...
* I'll call it output in my code.
*/
u8* output = new u8[w * h];
u8* walker = output;
// Loop across each byte (8 pixels)
for(int i=0; i<w*h/8; ++i) {
// Loop across each pixel
for(int b=(1<<7); b>0; b>>=1) {
// Expand pixel data to output
*walker++ = !!(data[i] & b);
}
}
希望有所幫助!
相關問題
- 1. 轉換8位圖像到4位圖像
- 2. 24位到1位位圖轉換
- 3. 轉換8位色的BMP圖像到8位灰度BMP
- 4. 8位到16位轉換
- 5. 1位位圖數據如何轉換爲8位(24bpp)?
- 6. Android:將位圖轉換爲單色位圖(每像素1位)
- 7. 轉換24位圖像RGB到3位8色
- 8. 轉換16位PCM到8位
- 9. 從8位轉換爲1個字節
- 10. 使用OpenCV將12位拜耳圖像轉換爲8位RGB
- 11. 在OpenCV 2中將8位圖像轉換爲32位
- 12. 將12位DICOM圖像轉換爲8位jpeg
- 13. 將24位圖像轉換爲8位單點觸摸?
- 14. 將RGB圖像轉換爲RGB 16位和8位
- 15. 轉換32位rgb圖像爲8位rgb C++
- 16. UWP圖像到位圖轉換
- 17. 轉換位圖圖像到黑莓J2ME
- 18. 轉換圖像下載到位圖
- 19. 將1bit位圖轉換爲8位位圖xamarin
- 20. C# - 如何將圖像轉換爲8位彩色圖像?
- 21. 在java中轉換8位灰度RAW圖像中的圖像
- 22. 轉換8位灰度級圖像以7位灰度級圖像
- 23. 如何在Java中將16位.tiff圖像轉換爲8位.tiff圖像?
- 24. 將8位二進制向量轉換爲1灰度像素
- 25. 在.Net 2.0中將8位灰度tiff圖像轉換爲8位灰度jpg
- 26. 在Verilog中將ALU 1位轉換爲ALU 8位
- 27. 16位圖像轉換爲32位
- 28. vb.net將32位位圖轉換爲8位(256色)
- 29. 位圖8位灰度圖像在C
- 30. 將位圖圖像轉換爲字節數組(Windows Phone 8)