91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 9KB
    文件類型: .java
    金幣: 1
    下載: 0 次
    發布日期: 2021-06-16
  • 語言: Java
  • 標簽: Android??Bitmap??單色Bmp??

資源簡介

Android不支持將Bitmap轉換成單色的Bmp圖片,所以參考Bmp格式說明,自己寫了一個轉換類。親測有效!!!

資源截圖

代碼片段和文件信息

package?com.lanhetech.core.qrcode.utils;

import?android.graphics.Bitmap;

/**
?*?保存為單色位圖,即使黑白位圖
?*/
public?class?BmpUtil?{


????/**
?????*?保存為單色bmp格式的完整字節數
?????**/
????public?static?byte[]?changeToMonochromeBitmap(Bitmap?bmp)?{
????????int[]?binarys?=?gray2Binary(bmp);
????????byte[]?data?=?compressMonoBitmap(bmp?binarys);
????????byte[]?header?=?addBMPImageHeader(data.length?+?62);
????????byte[]?infos?=?addBMPImageInfosHeader(bmp.getWidth()?bmp.getHeight());
????????byte[]?buffer?=?new?byte[62?+?data.length];
????????System.arraycopy(header?0?buffer?0?header.length);
????????System.arraycopy(infos?0?buffer?14?infos.length);
????????System.arraycopy(data?0?buffer?62?data.length);
????????return?buffer;
????}

????/**
?????*?保存為單色bmp數據,不包含頭,正向頭
?????**/
????public?static?byte[]?changeSingleBytes(Bitmap?bmp)?{
????????int[]?binarys?=?gray2Binary(bmp);
????????byte[]?data?=?compressMonoBitmap_ps(bmp?binarys);
????????return?data;
????}

????/**
?????*?將彩色圖轉換為灰階圖,并二值化處理
?????*
?????*?@param?bmp?位圖
?????*?@return?返回灰階圖二值化后的顏色int[]
?????*/
????private?static?int[]?gray2Binary(Bitmap?bmp)?{
????????int?width?=?bmp.getWidth();???//?獲取位圖的寬
????????int?height?=?bmp.getHeight();?//?獲取位圖的高
????????int[]?pixels?=?new?int[width?*?height];??//?通過位圖的大小創建像素點數組
????????bmp.getPixels(pixels?0?width?0?0?width?height);???//?int?0?代表0XFFFFFFFF即是1.0完全不透明,0.0f完全透明。黑色完全透明。
????????for?(int?i?=?0;?i?????????????for?(int?j?=?0;?j?????????????????int?grey?=?pixels[width?*?i?+?j];??//?第幾行,第幾個
????????????????//?分離三原色
????????????????int?alpha?=?((grey?&?0xFF000000)?>>?24);?//?透明度
????????????????int?red?=?((grey?&?0x00FF0000)?>>?16);???//?紅色
????????????????int?green?=?((grey?&?0x0000FF00)?>>?8);??//?綠色
????????????????int?blue?=?(grey?&?0x000000FF);??????????//?藍色
????????????????if?(alpha?==?0)?{??//?透明度為0,則說明沒有顏色,那變更為白色
????????????????????pixels[width?*?i?+?j]?=?0;???????????//?白色是0
????????????????????continue;
????????????????}
????????????????grey?=?(int)?(red?*?0.3?+?green?*?0.59?+?blue?*?0.11);??//?轉化為灰度圖??灰度值:255為白色,0為黑色
????????????????//?TODO:?2016/12/27?灰度值為200,可調整該參數
????????????????grey?=?grey?????????????????pixels[width?*?i?+?j]?=?grey;
????????????}
????????}
????????return?pixels;
????}


????/**
?????*?壓縮為完整單色bmp數組,并反向
?????*
?????*?@param?bmp?????壓縮需要用到位圖的寬度,高度。
?????*?@param?binarys?二值化數據
?????*?@return
?????*/
????private?static?byte[]?compressMonoBitmap(Bitmap?bmp?int[]?binarys)?{
????????int?width?=?bmp.getWidth();???//?獲取位圖的寬
????????int?height?=?bmp.getHeight();?//?獲取位圖的高
????????//?行補位的公式為?widthBytes?=?(width*biBitCount+31)/32*4
????????//?需要轉化為單色,所以biBitCount=1;
????????//?確定一行幾個字節
????????int?widthBytes?=?(width?+?31)?/?32?*?4;

????????byte[]?newss?=?new?byte[widthBytes?*?height];
????????for?(int?i?=?height;?i?>?0;?i--)?{
????????????for?(int?j?

評論

共有 條評論