而不α工藝RGB值我有,如果我seperately處理每個顏色通道,其性能良好的處理算法中。但是當我試圖處理整個像素值時,就錯過了一些東西。結果不好。現在我要隔離的像素值(排除阿爾法)的3色通道然後在新的值(3個信道)的工作。我怎樣才能在C++中做到這一點?知道我嘗試了RGB_565位圖格式,這不是一個好的解決方案。並知道我想將RGB合併到24位變量中。NDK - 從ARGB_8888位圖
1
A
回答
1
可以單獨訪問每個信道。確切的方式取決於實際的像素格式。
ANDROID_BITMAP_FORMAT_RGBA_8888
:每個像素爲4個字節長,佈局圖案爲RGBARGBA ...,即第1像素字節爲紅色分量,2-d爲綠色,3-d爲藍色, th是alpha分量。
ANDROID_BITMAP_FORMAT_RGB_565
:每個像素是2字節長的,存儲在本地字節序,所以顏色分量可能在明年的方式提取:
red = (u16_pix >> 11) & 0x1f;
green = (u16_pix >> 5) & 0x3f;
blue = (u16_pix >> 0) & 0x1f;
ANDROID_BITMAP_FORMAT_RGBA_4444
: 是因爲質量不好過時,你不應該甚至想想這個
ANDROID_BITMAP_FORMAT_A_8
: 是1個字節每個像素和設計爲純alpha或灰度圖像。這可能不是你正在尋找的東西。
注意,Android有沒有24 bpp的格式,您必須選擇32bpp的或16bpp的一個。關於你的算法中:有兩種選擇 - 代碼可以訪問各個組件直接在包裝的像素值,或者你可以去交織打包像素分爲幾架飛機,即數組,每個人只能容納一個通道。再經過處理,你可能會再次交錯他們的支持的格式或轉換爲其他格式,你感興趣的內容。
相關問題
- 1. 訪問ARGB_8888中的原始數據Android位圖
- 2. 在Android中將RGBA轉換爲ARGB_8888
- 3. 錯誤:位圖大小超過VM預算,將圖像轉換爲ARGB_8888時
- 4. 使用ARGB_8888時的DrawBitMap非常慢使用ARGB_8888
- 5. NDK - 在C++
- 6. 在ndk級創建位圖並顯示
- 7. Android NDK設置RGB位圖像素
- 8. Android位圖操作使用ndk
- 9. 在NDK中處理RGB_565位圖
- 10. 從NDK
- 11. 從OpenGL ES的幀緩衝區通過JNI在Android NDK創建位圖圖像
- 12. 無法從NDK
- 13. Android-ndk - addr2line定位線
- 14. Tegra Nsight和定位Android NDK
- 15. 未找到NDK位置
- 16. Android NDK OpenGL ES向Java位圖呈現圖形
- 17. 是否將ARGB_8888加載JPEG圖像時使用了alpha通道?
- 18. 的Android - 無α和解碼讀取PNG圖像作爲ARGB_8888
- 19. 如何創建ARGB_8888像素值?
- 20. 無法從android ndk
- 21. 是否有可能擁有32位(ARGB_8888)表面格式的動態壁紙?
- 22. Android,使用位圖(NDK + alpha字節):我錯過了什麼?
- 23. 如何使用NDK合併兩個或多個位圖?
- 24. NDK使用OpenCv藍色的位圖操作是橙色的?
- 25. 如何使用OpenGL ES渲染在NDK位圖2.0
- 26. 操縱256x256位圖崩潰android-ndk的JNI
- 27. Android - NDK - 從C++訪問的數據庫的位置
- 28. android ndk prebuild 64位的共享庫
- 29. android ndk-build ubuntu 12.10錯誤32位
- 30. 的Android NDK的位置在MAC
你能後,你已經嘗試了一些代碼? – gregn3