這篇文章主要講解了Android實(shí)現(xiàn)把bitmap圖片的某一部分的顏色改成其他顏色的方法,內(nèi)容清晰明了,對此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會有幫助。
創(chuàng)新互聯(lián)專注于波密企業(yè)網(wǎng)站建設(shè),自適應(yīng)網(wǎng)站建設(shè),商城網(wǎng)站制作。波密網(wǎng)站建設(shè)公司,為波密等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
把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 圖片中每一個點(diǎn)的color顏色值 int color = bitmap.getPixel(j, i); //將顏色值存在一個數(shù)組中 方便后面修改 // 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
補(bǔ)充知識:android圖片不同分辨率適配
dpi(Dots Per Inch):每英寸的像素點(diǎn)數(shù)量
dp(density-independent pixel):密度無關(guān)像素,當(dāng)dpi為160時,1dp=1px,當(dāng)dpi為320時,1dp=2px,以此類推.......,即公式1dp = (dpi / 160)px
圖片的規(guī)格:px*px,比如270*480像素的圖片
android使用匹配機(jī)制用到dpi這個參數(shù),無論是什么手機(jī),不管1080分辨率還是2K分辨率,都對應(yīng)著唯一的一個dpi,dpi的計(jì)算方法是,height和width分別是手機(jī)寬和高對應(yīng)的px數(shù)量,size代表平常所說的5英寸手機(jī)中的數(shù)字5,即英寸,代碼計(jì)算方法是float xdpi = getResources().getDisplayMetrics().xdpi; float ydpi = getResources().getDisplayMetrics().ydpi;其中獲取的xdpi和ydpi基本一樣,因?yàn)橐粋€手機(jī)的屏幕像素點(diǎn)是追求平均分布的,所以無論是寬、高、還是斜邊,其dpi應(yīng)該都是一樣的,當(dāng)然由于技術(shù)限制,一般會有些誤差。
現(xiàn)在拿到一個手機(jī),首先計(jì)算出它的dpi,然后查下方的表,找出對應(yīng)的密度,比如我的手機(jī)是1080*1920,為400dpi,則對應(yīng)xxhdpi,android系統(tǒng)會自動優(yōu)先在drawable-xxhdpi文件夾中找對應(yīng)的圖片,如果找到了就加載,此時圖片在手機(jī)上顯示的就是它本身的大小,也就是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中,可以看到顯示效果就是圖片寬高各占了屏幕寬高的四分之一,和預(yù)期一樣。
如果將xxhdpi下的圖片剪切到drawable-mdpi中,效果如下,可以看到圖片明顯變大。原因:系統(tǒng)在加載圖片時,首先去對應(yīng)的文件夾查找,沒找到,又依次按照順序一直在drawable-mdpi找到,但是系統(tǒng)會認(rèn)為你這張圖是專門為低密度的設(shè)備所設(shè)計(jì)的,如果直接將這張圖在當(dāng)前的高密度設(shè)備上使用就有可能會出現(xiàn)像素過低的情況,于是系統(tǒng)自動幫我們做了這樣一個放大操作。
理解:考慮該圖片在一個dpi對應(yīng)drawable-mdpi文件夾的手機(jī)上的顯示效果,因?yàn)槿绻窃趯?yīng)文件夾找到了圖片的話,就不會對圖片做縮放操作了,所以在一個低分辨率的手機(jī)上,270*480像素的圖片的確是這樣的顯示效果。
縮放倍數(shù):以mdpi為基準(zhǔn),drawable-mdpi : drawable-hdpi : drawable-xhdpi : drawable-xxhdpi : drawable-xxxhdpi = 1 : 1.5 :2 : 3 :4 即dpi范圍的最大值之比。
總結(jié):為了達(dá)到在各個分辨率的手機(jī)上都有一樣的效果,最好要有一套不同分辨率的圖片來放在各個文件夾中,一般對應(yīng)如下,不過項(xiàng)目中為了減小app體積,除了APP的圖標(biāo)會準(zhǔn)備一套外,其他的一般都只會準(zhǔn)備一張較高分辨率的,比如精進(jìn)學(xué)堂就只有drawable-xxhdpi。準(zhǔn)備高分辨率而不是低分辨率是為了防止放大圖片導(dǎo)致的模糊,而縮小造成的影響就沒那么嚴(yán)重。
密度 | 建議尺寸 |
drawable-mdpi | 48 * 48 |
drawable-hdpi | 72 * 72 |
drawable-xhdpi | 96 * 96 |
drawable-xxhdpi | 144 * 144 |
drawable-xxxhdpi | 192 * 192 |
看完上述內(nèi)容,是不是對Android實(shí)現(xiàn)把bitmap圖片的某一部分的顏色改成其他顏色的方法有進(jìn)一步的了解,如果還想學(xué)習(xí)更多內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。