android bitmap 替换指定颜色,Android 实现把bitmap图片的某一部分的颜色改成其他颜色...
把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
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图片不同分辨率适配
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范围的最大值之比。
总结:为了达到在各个分辨率的手机上都有一样的效果,最好要有一套不同分辨率的图片来放在各个文件夹中,一般对应如下,不过项目中为了减小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 bitmap 替换指定颜色,Android 实现把bitmap图片的某一部分的颜色改成其他颜色...相关推荐
- android bitmap 替换指定颜色,Android实现把bitmap图片的某一部分的颜色改成其他颜色的方法...
Android实现把bitmap图片的某一部分的颜色改成其他颜色的方法 发布时间:2020-07-29 14:11:15 来源:亿速云 阅读:107 作者:小猪 这篇文章主要讲解了Android实现把 ...
- win10如何将word、excel、txt等背景改成其他颜色
1.使用快捷键[Win+R]调出[运行],输入"regedit"确定,打开注册表: 2.按顺序依次打开注册表:HKEY_CURRENT_USER\Control Panel\Col ...
- android资源替换方案overlay,Android 运行时资源替换----Runtime Resource Overlay
先抛一个问题:现在有一个第三方应用,没有代码,只有编译好的apk,在不去改动这个apk的前提下,如果想改变这个应用中的一些资源显示效果,比如改变一个button的文字,一个imageview的背景,有 ...
- android分享到指定应用,Android调用系统分享,指定某些应用来分享
1.指定某些应用来分享 private void initShareIntent() { Intent intent = new Intent(Intent.ACTION_SEND); intent. ...
- android 截屏指定区域,Android截图 截取ContentView 截取指定的View并且保存
释放双眼,带上耳机,听听看~! 截取DecorView getWindow().getDecorView().setDrawingCacheEnabled(true); try { File myCa ...
- android studio替换jdk,Mac Android Studio JDK7 替换
目标 新版本的 Android Studio 当我们默认使用 Gradle中设置 buildToolsVersion "21.0.1" compileSdkVersion 21 ...
- android bitmap着色,android开发 替换bitmap中的颜色值
/** * 将bitmap中的某种颜色值替换成新的颜色 * @param bitmap * @param oldColor * @param newColor * @return */ public ...
- android+酷炫动画效果,Android简单酷炫点击动画(附源码)
在Android5.0之前, Android的点击效果一直很low, 即使5.0的波纹效果也不尽如人意. 而我之前写过一种比较酷炫的点击效果, 最近抽了点时间完善一下, 把阴影效果加入了进去, 大家先 ...
- android:autolink 颜色,Android设置完autoLink属性后自定义跳转到指定界面
在TextView 中设置autoLink 属性可以自动识别Web URL,电话号码,电子邮件地址添加下划线改变字体颜色并实现点击事件,支持自动识别的类型: android:autoLink=&quo ...
最新文章
- Win8兼容ARM十大意义:打破垄断拉低价格
- python3.5怎么安装pip-为python 3.5安装pip
- JavaScript id_好程序员web前端分享Javascript中函数作为对象
- 加快mysql导入、导出速度
- Nike Air Jordan Sneakers
- java 中使用_java中运算符的使用方法
- golang 提示:can‘t resolve file
- lassAtitit事件代理机制原理 基于css class的事件代理的事件代理titi
- vue将页面导出pdf,vue导出pdf
- 微信小程序连接低功率蓝牙控制单片机上硬件设备
- 移动GIS开发:手机基站定位+离线切片地图(矢量vtpk+栅格tpk)导航安卓APP
- AngularJS的学习--$on、$emit和$broadcast的使用 - 疯狂的原始人
- vue3 elementPlus input输入小写自动转为大写 vant限制输入
- 顺序容器迭代器之鄙见
- 一款黑苹果系统引导工具,系统来解Clover带来的限制和问题
- java 生成水印图片工具类, MultipartFile接收上传的图片,处理成加水印之后的MultipartFile
- 月结2 - 维护汇率[OB08]
- 99、插值法,函数逼近,曲线拟和,数值积分,数值微分,解线性方程组的直接方法,解线性方程组的迭代法,非线性方程求根,常微分方程的数值解法...
- [Excel] 用sumproduct函数实现数据透视表功能
- 逢二进一 、逢八进一、逢十六进一