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 grayscale - wikipedia, the free encyclopedia.

copy your test picture to /res/drawable folder, name it testpicture.jpg.
Mã nguồn PHP:
[color=#000000]
package com[/color][color=#007700].[/color][color=#0000bb]androidbitmapprocessing[/color][color=#007700]; [/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]app[/color][color=#007700].[/color][color=#0000bb]activity[/color][color=#007700];[/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]graphics[/color][color=#007700].[/color][color=#0000bb]bitmap[/color][color=#007700];[/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]graphics[/color][color=#007700].[/color][color=#0000bb]bitmapfactory[/color][color=#007700];[/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]graphics[/color][color=#007700].[/color][color=#0000bb]color[/color][color=#007700];[/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]os[/color][color=#007700].[/color][color=#0000bb]bundle[/color][color=#007700];[/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]widget[/color][color=#007700].[/color][color=#0000bb]imageview[/color][color=#007700]; public class [/color][color=#0000bb]androidbitmapprocessingactivity [/color][color=#007700]extends [/color][color=#0000bb]activity [/color][color=#007700]{ [/color][color=#0000bb]imageview imageview_source[/color][color=#007700], [/color][color=#0000bb]imageview_gray[/color][color=#007700], [/color][color=#0000bb]imageview_bw[/color][color=#007700]; [/color][color=#0000bb]bitmap bitmap_source[/color][color=#007700], [/color][color=#0000bb]bitmap_dest[/color][color=#007700]; [/color][color=#ff8000]/** called when the activity is first created. */ [/color][color=#007700]@[/color][color=#0000bb]override [/color][color=#007700]public [/color][color=#0000bb]void oncreate[/color][color=#007700]([/color][color=#0000bb]bundle savedinstancestate[/color][color=#007700]) { [/color][color=#0000bb]super[/color][color=#007700].[/color][color=#0000bb]oncreate[/color][color=#007700]([/color][color=#0000bb]savedinstancestate[/color][color=#007700]); [/color][color=#0000bb]setcontentview[/color][color=#007700]([/color][color=#0000bb]r[/color][color=#007700].[/color][color=#0000bb]layout[/color][color=#007700].[/color][color=#0000bb]main[/color][color=#007700]); [/color][color=#0000bb]imageview_source [/color][color=#007700]= ([/color][color=#0000bb]imageview[/color][color=#007700])[/color][color=#0000bb]findviewbyid[/color][color=#007700]([/color][color=#0000bb]r[/color][color=#007700].[/color][color=#0000bb]id[/color][color=#007700].[/color][color=#0000bb]source[/color][color=#007700]); [/color][color=#0000bb]imageview_gray [/color][color=#007700]= ([/color][color=#0000bb]imageview[/color][color=#007700])[/color][color=#0000bb]findviewbyid[/color][color=#007700]([/color][color=#0000bb]r[/color][color=#007700].[/color][color=#0000bb]id[/color][color=#007700].[/color][color=#0000bb]imagegray[/color][color=#007700]); [/color][color=#0000bb]imageview_bw [/color][color=#007700]= ([/color][color=#0000bb]imageview[/color][color=#007700])[/color][color=#0000bb]findviewbyid[/color][color=#007700]([/color][color=#0000bb]r[/color][color=#007700].[/color][color=#0000bb]id[/color][color=#007700].[/color][color=#0000bb]imagebw[/color][color=#007700]); [/color][color=#0000bb]bitmap_source [/color][color=#007700]= [/color][color=#0000bb]bitmapfactory[/color][color=#007700].[/color][color=#0000bb]decoderesource[/color][color=#007700]([/color][color=#0000bb]getresources[/color][color=#007700](), [/color][color=#0000bb]r[/color][color=#007700].[/color][color=#0000bb]drawable[/color][color=#007700].[/color][color=#0000bb]testpicture[/color][color=#007700]); [/color][color=#0000bb]imageview_gray[/color][color=#007700].[/color][color=#0000bb]setimagebitmap[/color][color=#007700]([/color][color=#0000bb]processingbitmap_gray[/color][color=#007700]([/color][color=#0000bb]bitmap_source[/color][color=#007700])); [/color][color=#0000bb]imageview_bw[/color][color=#007700].[/color][color=#0000bb]setimagebitmap[/color][color=#007700]([/color][color=#0000bb]processingbitmap_bw[/color][color=#007700]([/color][color=#0000bb]bitmap_source[/color][color=#007700])); } private [/color][color=#0000bb]bitmap processingbitmap_gray[/color][color=#007700]([/color][color=#0000bb]bitmap src[/color][color=#007700]){ [/color][color=#0000bb]bitmap dest [/color][color=#007700]= [/color][color=#0000bb]bitmap[/color][color=#007700].[/color][color=#0000bb]createbitmap[/color][color=#007700]( [/color][color=#0000bb]src[/color][color=#007700].[/color][color=#0000bb]getwidth[/color][color=#007700](), [/color][color=#0000bb]src[/color][color=#007700].[/color][color=#0000bb]getheight[/color][color=#007700](), [/color][color=#0000bb]src[/color][color=#007700].[/color][color=#0000bb]getconfig[/color][color=#007700]()); for([/color][color=#0000bb]int x [/color][color=#007700]= [/color][color=#0000bb]0[/color][color=#007700]; [/color][color=#0000bb]x [/color][color=#007700]< [/color][color=#0000bb]src[/color][color=#007700].[/color][color=#0000bb]getwidth[/color][color=#007700](); [/color][color=#0000bb]x[/color][color=#007700]++){ for([/color][color=#0000bb]int y [/color][color=#007700]= [/color][color=#0000bb]0[/color][color=#007700]; [/color][color=#0000bb]y [/color][color=#007700]< [/color][color=#0000bb]src[/color][color=#007700].[/color][color=#0000bb]getheight[/color][color=#007700](); [/color][color=#0000bb]y[/color][color=#007700]++){ [/color][color=#0000bb]int pixelcolor [/color][color=#007700]= [/color][color=#0000bb]src[/color][color=#007700].[/color][color=#0000bb]getpixel[/color][color=#007700]([/color][color=#0000bb]x[/color][color=#007700], [/color][color=#0000bb]y[/color][color=#007700]); [/color][color=#0000bb]int pixelalpha [/color][color=#007700]= [/color][color=#0000bb]color[/color][color=#007700].[/color][color=#0000bb]alpha[/color][color=#007700]([/color][color=#0000bb]pixelcolor[/color][color=#007700]); [/color][color=#0000bb]float pixelred [/color][color=#007700]= (float)[/color][color=#0000bb]color[/color][color=#007700].[/color][color=#0000bb]red[/color][color=#007700]([/color][color=#0000bb]pixelcolor[/color][color=#007700]) * [/color][color=#0000bb]0.3f[/color][color=#007700]; [/color][color=#0000bb]float pixelgreen [/color][color=#007700]= (float)[/color][color=#0000bb]color[/color][color=#007700].[/color][color=#0000bb]green[/color][color=#007700]([/color][color=#0000bb]pixelcolor[/color][color=#007700]) * [/color][color=#0000bb]0.59f[/color][color=#007700]; [/color][color=#0000bb]float pixelblue [/color][color=#007700]= (float)[/color][color=#0000bb]color[/color][color=#007700].[/color][color=#0000bb]blue[/color][color=#007700]([/color][color=#0000bb]pixelcolor[/color][color=#007700]) * [/color][color=#0000bb]0.11f[/color][color=#007700]; [/color][color=#0000bb]int pixelbw [/color][color=#007700]= (int)([/color][color=#0000bb]pixelred [/color][color=#007700]+ [/color][color=#0000bb]pixelgreen [/color][color=#007700]+ [/color][color=#0000bb]pixelblue[/color][color=#007700]); [/color][color=#0000bb]int newpixel [/color][color=#007700]= [/color][color=#0000bb]color[/color][color=#007700].[/color][color=#0000bb]argb[/color][color=#007700]( [/color][color=#0000bb]pixelalpha[/color][color=#007700], [/color][color=#0000bb]pixelbw[/color][color=#007700], [/color][color=#0000bb]pixelbw[/color][color=#007700], [/color][color=#0000bb]pixelbw[/color][color=#007700]); [/color][color=#0000bb]dest[/color][color=#007700].[/color][color=#0000bb]setpixel[/color][color=#007700]([/color][color=#0000bb]x[/color][color=#007700], [/color][color=#0000bb]y[/color][color=#007700], [/color][color=#0000bb]newpixel[/color][color=#007700]); } } return [/color][color=#0000bb]dest[/color][color=#007700]; } private [/color][color=#0000bb]bitmap processingbitmap_bw[/color][color=#007700]([/color][color=#0000bb]bitmap src[/color][color=#007700]){ [/color][color=#0000bb]bitmap dest [/color][color=#007700]= [/color][color=#0000bb]bitmap[/color][color=#007700].[/color][color=#0000bb]createbitmap[/color][color=#007700]( [/color][color=#0000bb]src[/color][color=#007700].[/color][color=#0000bb]getwidth[/color][color=#007700](), [/color][color=#0000bb]src[/color][color=#007700].[/color][color=#0000bb]getheight[/color][color=#007700](), [/color][color=#0000bb]src[/color][color=#007700].[/color][color=#0000bb]getconfig[/color][color=#007700]()); for([/color][color=#0000bb]int x [/color][color=#007700]= [/color][color=#0000bb]0[/color][color=#007700]; [/color][color=#0000bb]x [/color][color=#007700]< [/color][color=#0000bb]src[/color][color=#007700].[/color][color=#0000bb]getwidth[/color][color=#007700](); [/color][color=#0000bb]x[/color][color=#007700]++){ for([/color][color=#0000bb]int y [/color][color=#007700]= [/color][color=#0000bb]0[/color][color=#007700]; [/color][color=#0000bb]y [/color][color=#007700]< [/color][color=#0000bb]src[/color][color=#007700].[/color][color=#0000bb]getheight[/color][color=#007700](); [/color][color=#0000bb]y[/color][color=#007700]++){ [/color][color=#0000bb]int pixelcolor [/color][color=#007700]= [/color][color=#0000bb]src[/color][color=#007700].[/color][color=#0000bb]getpixel[/color][color=#007700]([/color][color=#0000bb]x[/color][color=#007700], [/color][color=#0000bb]y[/color][color=#007700]); [/color][color=#0000bb]int pixelalpha [/color][color=#007700]= [/color][color=#0000bb]color[/color][color=#007700].[/color][color=#0000bb]alpha[/color][color=#007700]([/color][color=#0000bb]pixelcolor[/color][color=#007700]); [/color][color=#0000bb]int pixelred [/color][color=#007700]= [/color][color=#0000bb]color[/color][color=#007700].[/color][color=#0000bb]red[/color][color=#007700]([/color][color=#0000bb]pixelcolor[/color][color=#007700]); [/color][color=#0000bb]int pixelgreen [/color][color=#007700]= [/color][color=#0000bb]color[/color][color=#007700].[/color][color=#0000bb]green[/color][color=#007700]([/color][color=#0000bb]pixelcolor[/color][color=#007700]); [/color][color=#0000bb]int pixelblue [/color][color=#007700]= [/color][color=#0000bb]color[/color][color=#007700].[/color][color=#0000bb]blue[/color][color=#007700]([/color][color=#0000bb]pixelcolor[/color][color=#007700]); [/color][color=#0000bb]int pixelbw [/color][color=#007700]= ([/color][color=#0000bb]pixelred [/color][color=#007700]+ [/color][color=#0000bb]pixelgreen [/color][color=#007700]+ [/color][color=#0000bb]pixelblue[/color][color=#007700])/[/color][color=#0000bb]3[/color][color=#007700]; [/color][color=#0000bb]int newpixel [/color][color=#007700]= [/color][color=#0000bb]color[/color][color=#007700].[/color][color=#0000bb]argb[/color][color=#007700]( [/color][color=#0000bb]pixelalpha[/color][color=#007700], [/color][color=#0000bb]pixelbw[/color][color=#007700], [/color][color=#0000bb]pixelbw[/color][color=#007700], [/color][color=#0000bb]pixelbw[/color][color=#007700]); [/color][color=#0000bb]dest[/color][color=#007700].[/color][color=#0000bb]setpixel[/color][color=#007700]([/color][color=#0000bb]x[/color][color=#007700], [/color][color=#0000bb]y[/color][color=#007700], [/color][color=#0000bb]newpixel[/color][color=#007700]); } } return [/color][color=#0000bb]dest[/color][color=#007700]; }}[/color]
main.xml
Mã nguồn PHP:
[color=#000000]
[/color][color=#007700]<?[/color][color=#0000bb]xml version[/color][color=#007700]=[/color][color=#dd0000]"1.0" [/color][color=#0000bb]encoding[/color][color=#007700]=[/color][color=#dd0000]"utf-8"[/color][color=#0000bb]?>[/color]<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <textview android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <scrollview android:layout_width="fill_parent" android:layout_height="fill_parent"> <linearlayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <textview android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="original" /> <imageview android:id="@+id/source" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/testpicture"/> <textview android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="gray: 0.3r + 0.59g + 0.11b" /> <imageview android:id="@+id/imagegray" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <textview android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="b and w: (r + g + b)/3" /> <imageview android:id="@+id/imagebw" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </linearlayout> </scrollview></linearlayout>
the code listed here convert color bitmap to gray scale by calculation. it's another approach using colormatrixcolorfilter; refer to next article: convert bitmap from color to grayscale using colormatrixcolorfilter
căn hộ chung cư Saigon Pearl được phát triển bởi Vietnam Land SSG LTD tối đa tầm nhìn sống hiện đại nội thất rộng rãi. chung cư Saigon Pearl tối đa tầm nhìn vị trí đẹp thư giãn lí tưởng. Căn hộ kề...
Dự án căn hộ chung cư Saigon Pearl hồ bơi tuyệt đẹp