android 下滤镜效果的实现
2014-09-24 09:58
337 查看
android 下滤镜效果的实现
滤镜过滤颜色已实现,简单版本可通过下面代码的3个参数实现黑白、红、绿。。。等7种过滤(RGB的7种组合)。
理论上讲可以过滤为任意颜色。调整混合结果的比值就行了。
public void drawBitmap(Canvas canvas, Bitmap bitmap, boolean r, boolean g, boolean b) {
ColorMatrix cm = new ColorMatrix();
float[] m = cm.getArray();
setColorFilterMatrix(m, r, g, b);
Paint pt = new Paint();
pt.setColorFilter(new ColorMatrixColorFilter(cm));
canvas.drawBitmap(bitmap, 0, 0, pt);
}
public void setColorFilterMatrix(float[] m, boolean r, boolean g, boolean b) {
final float R = 0.213f;
final float G = 0.715f;
final float B = 0.072f;
m[0] = 0;
m[6] = 0;
m[12] = 0;
if (r) {
m[0] = R; m[1] = G; m[2] = B;
}
if (g) {
m[5] = R; m[6] = G; m[7] = B;
}
if (b) {
m[10] = R; m[11] = G; m[12] = B;
}
}
滤镜过滤颜色已实现,简单版本可通过下面代码的3个参数实现黑白、红、绿。。。等7种过滤(RGB的7种组合)。
理论上讲可以过滤为任意颜色。调整混合结果的比值就行了。
public void drawBitmap(Canvas canvas, Bitmap bitmap, boolean r, boolean g, boolean b) {
ColorMatrix cm = new ColorMatrix();
float[] m = cm.getArray();
setColorFilterMatrix(m, r, g, b);
Paint pt = new Paint();
pt.setColorFilter(new ColorMatrixColorFilter(cm));
canvas.drawBitmap(bitmap, 0, 0, pt);
}
public void setColorFilterMatrix(float[] m, boolean r, boolean g, boolean b) {
final float R = 0.213f;
final float G = 0.715f;
final float B = 0.072f;
m[0] = 0;
m[6] = 0;
m[12] = 0;
if (r) {
m[0] = R; m[1] = G; m[2] = B;
}
if (g) {
m[5] = R; m[6] = G; m[7] = B;
}
if (b) {
m[10] = R; m[11] = G; m[12] = B;
}
}
相关文章推荐
- android 实现滤镜效果
- Android之ImageView实现滤镜效果(setColotFilter)
- Android:通过滤镜实现点击图片变暗效果
- Android:通过滤镜实现点击图片变暗效果
- Android滤镜效果实现及原理分析
- Android:通过滤镜实现点击图片变暗效果
- Android之ImageView实现滤镜效果(setColotFilter)
- android 下滤镜效果的实现
- Android 图片 滤镜效果 通过矩阵实现
- android ImageView实现变暗效果(使用setColorFilter滤镜)
- android 下滤镜效果的实现
- 利用Android自定义View实现转盘旋转的效果
- Direct3D提高篇之:HLSL编程实现PhotoShop滤镜效果
- 【原创】Android中ImageButton自定义按钮的按下效果的代码实现方法,附网上2种经典解决方法。
- Android小項目之---ListView实现论坛管理效果(附源碼)
- android开发体会一字幕效果实现
- android中TextView的文字实现动态效果,走马灯效果,闪烁效果
- Photoshop 滤镜实现油画效果图片
- Android 实现自定义控件效果2
- Android 按钮效果的两种实现方法