zoukankan      html  css  js  c++  java
  • Android图像处理之熔铸特效


    代码:

      1. package com.color;  
      2.   
      3. import android.content.Context;  
      4. import android.graphics.Bitmap;  
      5. import android.graphics.BitmapFactory;  
      6. import android.graphics.Canvas;  
      7. import android.graphics.Color;  
      8. import android.graphics.Paint;  
      9. import android.util.AttributeSet;  
      10. import android.widget.ImageView;  
      11.   
      12. public class ColorView extends ImageView {  
      13.   
      14.     private Paint myPaint = null;  
      15.     private Bitmap bitmap = null;  
      16.     private int width, height;  
      17.     private int[] oldPixels;  
      18.     private int[] newPixels;  
      19.     private int color, color2;  
      20.     private int pixelsR, pixelsG, pixelsB, pixelsA, pixelsR2, pixelsG2,  
      21.             pixelsB2;  
      22.   
      23.     public ColorView(Context context, AttributeSet attrs) {  
      24.         super(context, attrs);  
      25.         bitmap = BitmapFactory.decodeResource(context.getResources(),  
      26.                 R.drawable.ww);  
      27.         width = bitmap.getWidth();  
      28.         height = bitmap.getHeight();  
      29.         oldPixels = new int[width * height];  
      30.         newPixels = new int[width * height];  
      31.         invalidate();  
      32.     }  
      33.   
      34.     @Override  
      35.     protected void onDraw(Canvas canvas) {  
      36.         super.onDraw(canvas);  
      37.         // 获取像素  
      38.         bitmap.getPixels(oldPixels, 0, width, 0, 0, width, height);  
      39.   
      40.         for (int i = 1; i < height * width; i++) {  
      41.             color = oldPixels[i];  
      42.             // 获取RGB分量  
      43.             pixelsA = Color.alpha(color);  
      44.             pixelsR = Color.red(color);  
      45.             pixelsG = Color.green(color);  
      46.             pixelsB = Color.blue(color);  
      47.             //R  
      48.             int pixel = pixelsR * 128 / (pixelsG + pixelsB + 1);  
      49.             if (pixel < 0) {  
      50.                 pixel = 0;  
      51.             } else if (pixel > 255) {  
      52.                 pixel = 255;  
      53.             }  
      54.             pixelsR = pixel;  
      55.             //G  
      56.             pixel = pixelsG * 128 / (pixelsB + pixelsR + 1);  
      57.             if (pixel < 0){  
      58.                 pixel = 0;  
      59.             }  
      60.             else if (pixel > 255){  
      61.                 pixel = 255;  
      62.             }  
      63.             pixelsG = pixel;  
      64.             //B  
      65.             pixel = pixelsB * 128 / (pixelsR + pixelsG + 1);  
      66.             if (pixel < 0){  
      67.                 pixel = 0;  
      68.             }  
      69.             else if (pixel > 255){  
      70.                 pixel = 255;  
      71.             }  
      72.             pixelsB = pixel;  
      73.   
      74.             // 根据新的RGB生成新像素  
      75.             newPixels[i] = Color.argb(pixelsA, pixelsR, pixelsG, pixelsB);  
      76.   
      77.         }  
      78.         // 根据新像素生成新图片  
      79.         bitmap.setPixels(newPixels, 0, width, 0, 0, width, height);  
      80.         canvas.drawBitmap(bitmap, 0, 0, myPaint);  
      81.     }  
  • 相关阅读:
    强化学习读书笔记
    强化学习读书笔记
    知天命
    强化学习读书笔记
    强化学习读书笔记
    强化学习读书笔记
    强化学习读书笔记
    强化学习读书笔记
    强化学习读书笔记
    强化学习读书笔记
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/6722690.html
Copyright © 2011-2022 走看看