原图 效果图



代码:

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);}}



参考博文:点击打开链接



更多相关文章

  1. 【阿里云镜像】切换阿里巴巴开源镜像站镜像——Debian镜像
  2. android zxing生成二维码
  3. Android实现引导页并滑动跳转到主界面
  4. Android屏幕像素转换
  5. android 文档路径获取
  6. Android登录界面开发及响应;页面跳转;传参
  7. Android核心技术-day02-03-获取手机内部存储空间
  8. Android(安卓)-- App生成快捷方式
  9. Android获取定位经纬度,转换成地址

随机推荐

  1. Android(安卓)数据共享标准:ContentProvid
  2. android模拟器创建报错: PANIC: Could not
  3. Android(安卓)实现点击两次BACK键退出应
  4. Android(安卓)Weekly Notes Issue #240
  5. GitHub上的一些开源项目
  6. Drawable资源——Transition Drawable
  7. Android学习【3】Android开发问题记录
  8. android中联系人搜索框
  9. 解决android使用google map时显示方格的
  10. 菜鸟在android中密码框的纠结过程