Android图像处理之熔铸特效
16lz
2021-01-23
代码:
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 * 128 / (pixelsG + pixelsB + 1);if (pixel < 0) {pixel = 0;} else if (pixel > 255) {pixel = 255;}pixelsR = pixel;//Gpixel = pixelsG * 128 / (pixelsB + pixelsR + 1);if (pixel < 0){pixel = 0;}else if (pixel > 255){pixel = 255;}pixelsG = pixel;//Bpixel = pixelsB * 128 / (pixelsR + pixelsG + 1);if (pixel < 0){pixel = 0;}else 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 双击和手势的图片缩放
- android HttpClient 上传图片
- Android屏幕像素转换
- Android – 加载图片本缓存到内存与本地
- Android圆形图片--自定义控件
- Android APIDemo gif图片显示
- android 图片合成
- Android中Gallery来显示图片