本文主要是介绍Android图像处理之冰冻效果,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
原图 效果图
代码:
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();}@Overrideprotected 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);//Rint pixel = pixelsR - pixelsG - pixelsB;pixel = pixel * 3 / 2;if (pixel < 0) {pixel = -pixel;}if (pixel > 255){pixel = 255;}pixelsR = pixel; // 计算后重置R值,以下类同//Gpixel = pixelsG - pixelsR - pixelsB;pixel = pixel * 3 / 2;if (pixel < 0) {pixel = -pixel;}if (pixel > 255){pixel = 255;}pixelsG = pixel;//Bpixel = 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);}
}
参考博文:点击打开链接
这篇关于Android图像处理之冰冻效果的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!