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.
Copy your test picture to /res/drawable folder, name it testpicture.jpg.
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