关于android 图像格式问题
? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? 這算是篇總結吧。6月份開始做的一個android上的ar項目結束了。我做的部分是二維碼識別和圖像識別的預處理。這個項目雖然很累,但是讓我學到了很多東西,特別是嚴格的編碼規則,和java代碼的效率優化,以及抗壓力能力。
? ? ? ? ? ? ? ? ? ? ? ? ? 當然這里說的是圖片處理時的一些東西。因為在做項目的時候在網上找了很多資料都不完全,甚至很多都會誤導別人。所以我覺得有必要總結一下。
? ? ? ? ? ? ? ? ? ? ? ? ? 首先是android本身支持的圖片格式,android本身支持的圖片格式只有兩種 jpg和png。還有一種格式webp 不能跨平臺(這點是聽別人說的,我沒有驗證)。除此以外的格式android都不支持。這里說的支持是指bitmap編碼成這兩種格式的文件。其他格式的,只要熟悉標準,完全可以自己寫。
? ? ? ? ? ? ? ? ? ? ? ? ? 然后是位圖格式,Config.ARGB_8888,ARGB_4444,RGB_565,ALPHA_8,這些都是位圖格式。所謂位圖,就是bitmap,無壓縮的圖像格式, ARGB_8888的意思是 每一個像素都由 4個通道來描述,分別是 透明度(alpha),紅色(red),綠色(green),藍色(blue),每一個通道都占8bit,也就是一個字節。剩下的argb_4444,rgb_565 于此類似。
? ? ? ? ? ? ? ? ? ? ? ? 因為位圖是無壓縮的所以完全可以計算出來文件大小,比如一個 100*100的位圖。如果是argb_8888那么他的大小是 4(通道) * 1(8 / 8) * 100 * 100 = 40000byte 。真實的圖片應該會略大一些,一般會有40字節的頭文件。
? ? ? ? ? ? ? ? ? ? ? 剩下的這個alpha_8 這個配置,我個人認為是無用的。因為項目正好需要這個配置的圖像文件,ios上是直接有函數對應的,但是安卓上的這個配置不可用,我試了很多辦法都不行。而且我在google的官方文檔中沒有找到相關的相關的聲明。這點是大家需要注意的。 如果有知道原因的大神也希望留言給我
? ? ? ? ? ? ? ? ? ? ?還有就是 灰度和黑白的區別,灰度圖其實就是亮度圖,每個像素由 0-255之間的數字來描述。黑白圖的質量就低多了。每個像素 只有1bit ,(0或者1)來描述。
android本身是不支持這兩種圖的,但是這些都可以手寫出來,灰度有轉換公式,黑白的話可以先轉換成灰度,然后判斷小于128 則為0,反之則為1 ,主要是的難點是文件的頭部信息格式。
? ? ? ? ? ? ? ? ? ? ?最后是一些常見的圖像模式:argb,cmyk(印刷標準),yuv(android攝像機返回的信息),rgb,還有灰度,黑白。
? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ??
?
轉載于:https://www.cnblogs.com/pangblog/p/3243885.html
總結
以上是生活随笔為你收集整理的关于android 图像格式问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WinForm实现窗体最小化后小图标在右
- 下一篇: 求二进制数中1的个数