博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android图像处理之冰冻效果
阅读量:4104 次
发布时间:2019-05-25

本文共 1982 字,大约阅读时间需要 6 分钟。

                    原图                                                                          效果图

代码:

package com.color;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.util.AttributeSet;import android.widget.ImageView;public class ColorView extends ImageView {	private Paint myPaint = null;	private Bitmap bitmap = null;	private int width, height;	private int[] oldPixels;	private int[] newPixels;	private int color, color2;	private int pixelsR, pixelsG, pixelsB, pixelsA, pixelsR2, pixelsG2,			pixelsB2;	public ColorView(Context context, AttributeSet attrs) {		super(context, attrs);		bitmap = BitmapFactory.decodeResource(context.getResources(),				R.drawable.ww);		width = bitmap.getWidth();		height = bitmap.getHeight();		oldPixels = new int[width * height];		newPixels = new int[width * height];		invalidate();	}	@Override	protected void onDraw(Canvas canvas) {		super.onDraw(canvas);		// 获取像素		bitmap.getPixels(oldPixels, 0, width, 0, 0, width, height);		for (int i = 1; i < height * width; i++) {			color = oldPixels[i];			// 获取RGB分量			pixelsA = Color.alpha(color);			pixelsR = Color.red(color);			pixelsG = Color.green(color);			pixelsB = Color.blue(color);			//R			int pixel = pixelsR - pixelsG - pixelsB;			pixel = pixel * 3 / 2;			if (pixel < 0) {				pixel = -pixel;			}			if (pixel > 255){				pixel = 255;			}			pixelsR = pixel; // 计算后重置R值,以下类同			//G			pixel = pixelsG - pixelsR - pixelsB;			pixel = pixel * 3 / 2;			if (pixel < 0) {				pixel = -pixel;			}			if (pixel > 255){				pixel = 255;			}			pixelsG = pixel;			//B			pixel = pixelsB - pixelsR - pixelsG;			pixel = pixel * 3 / 2;			if (pixel < 0) {				pixel = -pixel;			}			if (pixel > 255){				pixel = 255;			}			pixelsB = pixel;						// 根据新的RGB生成新像素			newPixels[i] = Color.argb(pixelsA, pixelsR, pixelsG, pixelsB);		}		// 根据新像素生成新图片		bitmap.setPixels(newPixels, 0, width, 0, 0, width, height);		canvas.drawBitmap(bitmap, 0, 0, myPaint);	}}

参考博文:

转载地址:http://fucsi.baihongyu.com/

你可能感兴趣的文章
MySQL-分布式架构-MyCAT
查看>>
设计模式六大原则(6):开闭原则
查看>>
阿里面试总结--JAVA
查看>>
Servlet的生命周期
查看>>
JAVA八大经典书籍,你看过几本?
查看>>
《读书笔记》—–书单推荐
查看>>
【设计模式】—-(2)工厂方法模式(创建型)
查看>>
有return的情况下try catch finally的执行顺序(最有说服力的总结)
查看>>
String s1 = new String("abc"); String s2 = ("abc");
查看>>
JAVA数据类型
查看>>
Xshell 4 入门
查看>>
SoapUI-入门
查看>>
Oracle -常用命令
查看>>
JAVA技术简称
查看>>
ORACLE模糊查询优化浅谈
查看>>
2016——个人年度总结
查看>>
2017——新的开始,加油!
查看>>
【Python】学习笔记——-6.2、使用第三方模块
查看>>
【Python】学习笔记——-7.0、面向对象编程
查看>>
【Python】学习笔记——-7.1、类和实例
查看>>