android bitmap 饱和度 demo,实现类似QQ离线用户头像彩色变灰色的成效
实现类似QQ离线用户头像彩色变灰色的效果
头像由彩色变灰色有两种实现方式:
方法1把图片彩色图转换为纯黑白二色:
/**
* 将彩色图转换为纯黑白二色
*
* @param 位图
* @return 返回转换好的位图
*/
private Bitmap convertToBlackWhite(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 alpha = 0xFF << 24;
for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++) {
int grey = pixels[width * i + j];
// 分离三原色
int red = ((grey & 0x00FF0000) >> 16);
int green = ((grey & 0x0000FF00) >> 8);
int blue = (grey & 0x000000FF);
// 转化成灰度像素
grey = (int) (red * 0.3 + green * 0.59 + blue * 0.11);
grey = alpha | (grey << 16) | (grey << 8) | grey;
pixels[width * i + j] = grey;
}
}
// 新建图片
Bitmap newBmp = Bitmap.createBitmap(width, height, Config.RGB_565);
// 设置图片数据
newBmp.setPixels(pixels, 0, width, 0, 0, width, height);
Bitmap resizeBmp = ThumbnailUtils.extractThumbnail(newBmp, 380, 460);
return resizeBmp;
}
方法2使用ColorMatrix:
ColorMatrix类有一个内置的方法可用于改变饱和度。
传入一个大于1的数字将增加饱和度,而传入一个0~1之间的数字会减少饱和度。0值将产生一幅灰度图像。
代码如下:
ImageView image1 = (ImageView) findViewById(R.id.imageView1);
ColorMatrix matrix = new ColorMatrix();
matrix.setSaturation(0);
ColorMatrixColorFilter filter = new ColorMatrixColorFilter(matrix);
image1.setColorFilter(filter);
这里再扩展下,有时候我们需要把一张图变暗,也有两种方式可以实现。
方法1:
ImageView image3 = (ImageView) findViewById(R.id.imageView3);
Drawable drawable = getResources().getDrawable(R.drawable.mm);
drawable.setColorFilter(Color.GRAY, PorterDuff.Mode.MULTIPLY);
image3.setImageDrawable(drawable);
方法2:把要显示的图片作为background,把变暗的图片或颜色设为src,就可以实现变暗的效果。
android:id="@+id/imageView4"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginLeft="10dp"
android:background="@drawable/mm2"
android:src="#77000000" />
上图:
Demo下载:https://github.com/xie2000/ColorMatrixDemo
QQ交流群:6399844
android bitmap 饱和度 demo,实现类似QQ离线用户头像彩色变灰色的成效相关推荐
- 实现类似QQ离线用户头像彩色变灰色的效果
头像由彩色变灰色有两种实现方式: 方法1把图片彩色图转换为纯黑白二色: /*** 将彩色图转换为纯黑白二色* * @param 位图* @return 返回转换好的位图*/private Bitmap ...
- android bitmap 饱和度 demo,Android GPUImage实现多种图像滤镜效果
前言 GPUImage 是iOS下一个开源的基于GPU的图像处理库,提供各种各样的图像处理滤镜,并且支持照相机和摄像机的实时滤镜.GPUImage for Android是它在Android下的实现, ...
- QT之灰色头像(类似QQ离线头像)
QT之灰色头像(类似QQ离线头像) QT之灰色头像类似QQ离线头像 概要 效果图 上代码 下代码 结尾 概要 在讲正常图片转灰色图片之前,我们先来了解下灰度图.灰度图又称为灰阶图,任何颜色都由红.绿. ...
- MFC 列表控件CListCtrl加载类似QQ界面的头像与文字
本文主要讲述使用VS2012 MFC的CListCtrl(列表)控件加载类似于QQ界面的图片与文字数据.主要通过CListCtrl::InsertColumn.InsertItem.SetItemTe ...
- Android之发送短信后按钮(60秒)变灰色每隔一秒递减显示
无论是做PC端还是android端,每次注册都有发送短信之后,60秒每隔一秒递减显示,如下图 这个地方需要注意的是按钮变灰色之后不能再点击,然后就是android更新UI,需要用handle,或者其它 ...
- 高逼格Android转场动画,轻松实现掘金用户头像转场动画
前言 转场动画在交互上非常有优势,本文从转场动画的使用场景和方法起,最后是实现掘金中用户头像的转场动画. 转场动画适用的版本 Activity transition APIs 只有在Android 5 ...
- 安卓实现qq离线图像变灰色或暗色效果
头像由彩色变灰色有两种实现方式: /** 方法1:* ColorMatrix类有一个内置的方法可用于改变饱和度.* 传入一个大于1的数字将增加饱和度,而传入一个0-1之间的数字会减少饱和度.0值将产生 ...
- Android加载用户头像的功能实现
加载用户头像的过程是,首先从本地查看是否存储了用户的头像,如果有,则从本地读取后加载到ImageView中,如果没有,则去服务器下载头像保存到本地,并加载. public void initData( ...
- Android:使用百度地图SDK定位当前具体位置(类似QQ发表说说的选择地点功能)
百度地图 Android SDK是一套基于Android 2.1及以上版本设备的应用程序接口. 可以使用该套 SDK开发适用于Android系统移动设备的地图应用,通过调用地图SDK接口,可以轻松访问 ...
最新文章
- prototype.js 1.4版开发者手册
- 模式识别之基础---常用分类算法特性归纳
- Android ListView重写Adapter
- 布局:多列等高布局方法
- 服务器返回文件格式,iOS开发--服务器返回的数据解析
- teradata 数据定义
- java中jtextpane_Java JTextPane
- C++ 整型长度的获取 不同的系统
- LINUX命令 VS DOS命令
- 协议--SIP/SDP
- 利用DHT网络原理制作bt采集蜘蛛
- 执行python manage.py celery -A HttpRunnerManager worker --loglevel=info 报错问题集锦
- 关于高级交互设计师的5个经验总结
- TPS和QPS的区别和理解
- Xftp5 安装教程
- 昨天面了一位,见识到了Spring的天花板~
- Android 6.0/7.0权限
- windows,打印机无打印任务,仍不断打印
- 直播电商平台开发,video组件实现视频弹幕功能
- 【每日新闻】高盛与苹果合作推出AppleCard