Cdacians

Cdacians
Cdacians

Tuesday 7 August 2012

Convert bitmap from color to GrayScale


Convert bitmap from color to GrayScale

Last article described how to Convert bitmap from color to black and white using the simple formula BW = (R + G +)/3. Some experts suggested that it should be 0.3R + 0.59G + 0.11B ~ refer http://en.wikipedia.org/wiki/Grayscale.

Convert bitmap from color to GrayScale


Copy your test picture to /res/drawable folder, name it testpicture.jpg.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package com.AndroidBitmapProcessing;
 
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.ImageView;
 
public class AndroidBitmapProcessingActivity extends Activity {
  
 ImageView imageView_Source, imageView_Gray, imageView_BW;
 Bitmap bitmap_Source, bitmap_Dest;
  
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        imageView_Source = (ImageView)findViewById(R.id.source);
        imageView_Gray = (ImageView)findViewById(R.id.imageGray);
        imageView_BW = (ImageView)findViewById(R.id.imageBW);
         
        bitmap_Source = BitmapFactory.decodeResource(getResources(), R.drawable.testpicture);
        imageView_Gray.setImageBitmap(processingBitmap_Gray(bitmap_Source));
        imageView_BW.setImageBitmap(processingBitmap_BW(bitmap_Source));
    }
     
    private Bitmap processingBitmap_Gray(Bitmap src){
      
     Bitmap dest = Bitmap.createBitmap(
       src.getWidth(), src.getHeight(), src.getConfig());
      
     for(int x = 0; x < src.getWidth(); x++){
      for(int y = 0; y < src.getHeight(); y++){
       int pixelColor = src.getPixel(x, y);
       int pixelAlpha = Color.alpha(pixelColor);
       float pixelRed = (float)Color.red(pixelColor) * 0.3f;
       float pixelGreen = (float)Color.green(pixelColor) * 0.59f;
       float pixelBlue = (float)Color.blue(pixelColor) * 0.11f;
        
       int pixelBW = (int)(pixelRed + pixelGreen + pixelBlue);
       int newPixel = Color.argb(
         pixelAlpha, pixelBW, pixelBW, pixelBW);
        
       dest.setPixel(x, y, newPixel);
      }
     }
      
     return dest;
    }
     
    private Bitmap processingBitmap_BW(Bitmap src){
      
     Bitmap dest = Bitmap.createBitmap(
       src.getWidth(), src.getHeight(), src.getConfig());
      
     for(int x = 0; x < src.getWidth(); x++){
      for(int y = 0; y < src.getHeight(); y++){
       int pixelColor = src.getPixel(x, y);
       int pixelAlpha = Color.alpha(pixelColor);
       int pixelRed = Color.red(pixelColor);
       int pixelGreen = Color.green(pixelColor);
       int pixelBlue = Color.blue(pixelColor);
        
       int pixelBW = (pixelRed + pixelGreen + pixelBlue)/3;
       int newPixel = Color.argb(
         pixelAlpha, pixelBW, pixelBW, pixelBW);
        
       dest.setPixel(x, y, newPixel);
      }
     }
      
     return dest;
    }
}


akm
www.cdacians.com

No comments:

Post a Comment