亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

Android 實現把bitmap圖片的某一部分的顏色改成其他顏色

瀏覽:3日期:2022-09-24 14:35:02

把bitmap圖片的某一部分的顏色改成其他顏色

private Bitmap ChangeBitmap(Bitmap bitmap){ int bitmap_h; int bitmap_w; int mArrayColorLengh; int[] mArrayColor; int count = 0; mArrayColorLengh = bitmap.getWidth() * bitmap.getHeight(); mArrayColor = new int[mArrayColorLengh]; bitmap_w=bitmap.getWidth(); bitmap_h =bitmap.getHeight(); int newcolor=-1; for (int i = 0; i < bitmap.getHeight(); i++) { for (int j = 0; j < bitmap.getWidth(); j++) { //獲得Bitmap 圖片中每一個點的color顏色值 int color = bitmap.getPixel(j, i); //將顏色值存在一個數組中 方便后面修改 // mArrayColor[count] = color; int r = Color.red(color); int g = Color.green(color); int b = Color.blue(color); int a =Color.alpha(color); if ((90<r&&r<=200)&&(90<g&&g<=200)&&(90<b&&b<=200)){//大概得把非道路(路旁變透明) a=0; Log.i('imagecolor','============'+color); }else if (r==255&&g==255&&b==33){//把黃色的箭頭白色 因為黃色箭頭rgb大部分是255 255 33(值可以用畫圖工具取值) 組合 // 但是還有小部分有別的值組成(箭頭所不能變成全白有黃色斑點) r=255; g=255; b=255; } color = Color.argb(a, r, g, b); mArrayColor[count]=color; Log.i('imagecolor','============'+ mArrayColor[count]); count++; } } mbitmap = Bitmap.createBitmap( mArrayColor, bitmap_w, bitmap_h, Bitmap.Config.ARGB_4444 ); return mbitmap;}

Android 實現把bitmap圖片的某一部分的顏色改成其他顏色

補充知識:android圖片不同分辨率適配

dpi(Dots Per Inch):每英寸的像素點數量

dp(density-independent pixel):密度無關像素,當dpi為160時,1dp=1px,當dpi為320時,1dp=2px,以此類推.......,即公式1dp = (dpi / 160)px

圖片的規格:px*px,比如270*480像素的圖片

android使用匹配機制用到dpi這個參數,無論是什么手機,不管1080分辨率還是2K分辨率,都對應著唯一的一個dpi,dpi的計算方法是,height和width分別是手機寬和高對應的px數量,size代表平常所說的5英寸手機中的數字5,即英寸,代碼計算方法是float xdpi = getResources().getDisplayMetrics().xdpi; float ydpi = getResources().getDisplayMetrics().ydpi;其中獲取的xdpi和ydpi基本一樣,因為一個手機的屏幕像素點是追求平均分布的,所以無論是寬、高、還是斜邊,其dpi應該都是一樣的,當然由于技術限制,一般會有些誤差。

現在拿到一個手機,首先計算出它的dpi,然后查下方的表,找出對應的密度,比如我的手機是1080*1920,為400dpi,則對應xxhdpi,android系統會自動優先在drawable-xxhdpi文件夾中找對應的圖片,如果找到了就加載,此時圖片在手機上顯示的就是它本身的大小,也就是270*480像素;如果未找到,就去更高分辨率的文件夾xxxhdpi中找,一直找到最高也沒有的話,就會查找drawable-nodpi文件夾,還是沒有就開始依次查詢低分辨率的文件夾,由高到低一直查到ldpi。

dpi范圍

密度

0dpi ~ 120dpi

ldpi

120dpi ~ 160dpi

mdpi

160dpi ~ 240dpi

hdpi

240dpi ~ 320dpi

xhdpi

320dpi ~ 480dpi

xxhdpi

480dpi ~ 640dpi

xxxhdpi

舉例:將一個270*480像素的圖片放入布局,寬高都是wrap_content,將該圖片放入xxhdpi中,可以看到顯示效果就是圖片寬高各占了屏幕寬高的四分之一,和預期一樣。

如果將xxhdpi下的圖片剪切到drawable-mdpi中,效果如下,可以看到圖片明顯變大。原因:系統在加載圖片時,首先去對應的文件夾查找,沒找到,又依次按照順序一直在drawable-mdpi找到,但是系統會認為你這張圖是專門為低密度的設備所設計的,如果直接將這張圖在當前的高密度設備上使用就有可能會出現像素過低的情況,于是系統自動幫我們做了這樣一個放大操作。

理解:考慮該圖片在一個dpi對應drawable-mdpi文件夾的手機上的顯示效果,因為如果是在對應文件夾找到了圖片的話,就不會對圖片做縮放操作了,所以在一個低分辨率的手機上,270*480像素的圖片的確是這樣的顯示效果。

縮放倍數:以mdpi為基準,drawable-mdpi : drawable-hdpi : drawable-xhdpi : drawable-xxhdpi : drawable-xxxhdpi = 1 : 1.5 :2 : 3 :4 即dpi范圍的最大值之比。

Android 實現把bitmap圖片的某一部分的顏色改成其他顏色

總結:為了達到在各個分辨率的手機上都有一樣的效果,最好要有一套不同分辨率的圖片來放在各個文件夾中,一般對應如下,不過項目中為了減小app體積,除了APP的圖標會準備一套外,其他的一般都只會準備一張較高分辨率的,比如精進學堂就只有drawable-xxhdpi。準備高分辨率而不是低分辨率是為了防止放大圖片導致的模糊,而縮小造成的影響就沒那么嚴重。

密度

建議尺寸

drawable-mdpi

48 * 48

drawable-hdpi

72 * 72

drawable-xhdpi

96 * 96

drawable-xxhdpi

144 * 144

drawable-xxxhdpi

192 * 192

比如,可以去精進學堂的項目中看一下,對應的icon的規格都是按上面的設計的

以上這篇Android 實現把bitmap圖片的某一部分的顏色改成其他顏色就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Android
相關文章:
主站蜘蛛池模板: 国产成人精品免费视频软件 | 中文字幕日韩一区 | 天堂精品| 精品一成人岛国片在线观看 | 最近的免费中文字幕视频 | 日韩视频在线观看一区二区 | 国产精品亚洲欧美一区麻豆 | 国产成人在线观看免费网站 | 在线精品国内视频秒播 | 免费在线看黄 | 狠狠狠色丁香婷婷综合久久五月 | 色婷婷欧美| 欧美性爽xxxⅹbbbb | 国产精品99久久免费观看 | 在线观看国产一区亚洲bd | 台湾亚洲精品一区二区tv | 国产自愉自愉全免费高清 | 欧美久久一区二区 | 天天综合亚洲国产色 | 午夜三级在线 | 亚洲最新 | 久热香蕉在线视频 | ww亚洲ww在线观看国产 | xxxxxx日本护士xxxx | 看色片| 一区二区三区免费视频观看 | 日韩一区二区视频在线观看 | 国产一区二区在线播放 | 偷窥第一页 | 亚洲精品乱码国产精品乱码 | 奇米影视狠狠干 | 亚洲第一在线视频 | 一级做性色a爰片久久毛片 一级做性色a爰片久久毛片免费 | 久久久久久久久综合 | 人人干人人玩 | 亚洲xxxxxx | 综合久久 五十路 二区 | 国产免费资源 | 欧美一级特黄aa大片视频 | 国产乱辈通伦影片在线播放 | 日韩一区二区三区免费体验 |