最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android-如何將RGB彩色圖轉換為灰度圖方法介紹

 更新時間:2012年11月22日 16:18:41   作者:  
本文將詳細介紹Android-如何將RGB彩色圖轉換為灰度圖方法,需要了解更多的朋友可以參考下

實例:RGB2Grey

項目運行效果圖:       

         \

 

 

源代碼

[java] 
public class MainActivity extends Activity { 

    /* (non-Javadoc)
     * @see android.app.Activity#onCreate(android.os.Bundle)
     */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main); 
        //通過Id來獲取界面中組件的引用  
        Button rgb2greyBtn  = (Button) findViewById(R.id.rgb2greybtn); 
        ImageView imageView1 = (ImageView) findViewById(R.id.imageView1); 
        final ImageView imageView2 = (ImageView) findViewById(R.id.imageView2);  
        //通過位圖工廠,創(chuàng)建一個位圖  
        final Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_android); 
        imageView1.setImageBitmap(bitmap); 
        //為“轉換為灰度圖”按鈕添加監(jiān)聽事件  
        rgb2greyBtn.setOnClickListener(new OnClickListener() { 

            @Override 
            public void onClick(View v) { 
                // TODO Auto-generated method stub  
                //將轉換過后的灰度圖顯示出來  
                imageView2.setImageBitmap(convertGreyImg(bitmap)); 
            } 
        }); 

    } 

    /**
     * 將彩色圖轉換為灰度圖
     * @param img 位圖
     * @return  返回轉換好的位圖
     */ 
    public Bitmap convertGreyImg(Bitmap img) { 
        int width = img.getWidth();         //獲取位圖的寬  
        int height = img.getHeight();       //獲取位圖的高  

        int []pixels = new int[width * height]; //通過位圖的大小創(chuàng)建像素點數(shù)組  

        img.getPixels(pixels, 0, width, 0, 0, width, height); 
        int alpha = 0xFF << 24;  
        for(int i = 0; i < height; i++)  { 
            for(int j = 0; j < width; j++) { 
                int grey = pixels[width * i + j]; 

                int red = ((grey  & 0x00FF0000 ) >> 16); 
                int green = ((grey & 0x0000FF00) >> 8); 
                int blue = (grey & 0x000000FF); 

                grey = (int)((float) red * 0.3 + (float)green * 0.59 + (float)blue * 0.11); 
                grey = alpha | (grey << 16) | (grey << 8) | grey; 
                pixels[width * i + j] = grey; 
            } 
        } 
        Bitmap result = Bitmap.createBitmap(width, height, Config.RGB_565); 
        result.setPixels(pixels, 0, width, 0, 0, width, height); 
        return result; 
    } 

public class MainActivity extends Activity {

    /* (non-Javadoc)
     * @see android.app.Activity#onCreate(android.os.Bundle)
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //通過Id來獲取界面中組件的引用
        Button rgb2greyBtn  = (Button) findViewById(R.id.rgb2greybtn);
        ImageView imageView1 = (ImageView) findViewById(R.id.imageView1);
        final ImageView imageView2 = (ImageView) findViewById(R.id.imageView2);
        //通過位圖工廠,創(chuàng)建一個位圖
        final Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_android);
        imageView1.setImageBitmap(bitmap);
        //為“轉換為灰度圖”按鈕添加監(jiān)聽事件
        rgb2greyBtn.setOnClickListener(new OnClickListener() {

   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
    //將轉換過后的灰度圖顯示出來
    imageView2.setImageBitmap(convertGreyImg(bitmap));
   }
  });

    }

    /**
     * 將彩色圖轉換為灰度圖
     * @param img 位圖
     * @return 返回轉換好的位圖
     */
    public Bitmap convertGreyImg(Bitmap img) {
     int width = img.getWidth();   //獲取位圖的寬
     int height = img.getHeight();  //獲取位圖的高

     int []pixels = new int[width * height]; //通過位圖的大小創(chuàng)建像素點數(shù)組

     img.getPixels(pixels, 0, width, 0, 0, width, height);
     int alpha = 0xFF << 24;
     for(int i = 0; i < height; i++) {
      for(int j = 0; j < width; j++) {
       int grey = pixels[width * i + j];

       int red = ((grey  & 0x00FF0000 ) >> 16);
       int green = ((grey & 0x0000FF00) >> 8);
       int blue = (grey & 0x000000FF);

       grey = (int)((float) red * 0.3 + (float)green * 0.59 + (float)blue * 0.11);
       grey = alpha | (grey << 16) | (grey << 8) | grey;
       pixels[width * i + j] = grey;
      }
     }
     Bitmap result = Bitmap.createBitmap(width, height, Config.RGB_565);
     result.setPixels(pixels, 0, width, 0, 0, width, height);
     return result;
    }
}
 

布局文件:

[html] 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/LinearLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 
    <ImageView  
        android:id="@+id/imageView1" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_gravity="center_horizontal" 
        /> 
    <Button  
        android:id="@+id/rgb2greybtn" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="@string/rgb2greybtn" 
        android:layout_gravity="center_horizontal"/> 
    <ImageView  
        android:id="@+id/imageView2" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_gravity="center_horizontal" 
        />" 
</LinearLayout> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
 <ImageView
     android:id="@+id/imageView1"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_gravity="center_horizontal"
     />
 <Button
     android:id="@+id/rgb2greybtn"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="@string/rgb2greybtn"
     android:layout_gravity="center_horizontal"/>
 <ImageView
     android:id="@+id/imageView2"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_gravity="center_horizontal"
     />"
</LinearLayout>

相關文章

  • android 手機SD卡讀寫操作(以txt文本為例)實現(xiàn)步驟

    android 手機SD卡讀寫操作(以txt文本為例)實現(xiàn)步驟

    要完成SD卡讀寫操作首先對manifest注冊SD卡讀寫權限其次是創(chuàng)建一個對SD卡中文件讀寫的類寫一個用于檢測讀寫功能的的布局然后就是UI的類了,感興趣的朋友可以參考下,希望可以幫助到你
    2013-02-02
  • Android ViewPager實現(xiàn)每隔兩秒自動切換圖片功能

    Android ViewPager實現(xiàn)每隔兩秒自動切換圖片功能

    圖片來回自動切換,設計非常人性化,那么圖片自動切換功能基于代碼如何實現(xiàn)的呢?下面小編給大家?guī)砹薃ndroid ViewPager實現(xiàn)每隔兩秒自動切換圖片功能,感興趣的朋友一起看看吧
    2021-10-10
  • Android實現(xiàn)客戶端語音動彈界面實例代碼

    Android實現(xiàn)客戶端語音動彈界面實例代碼

    這篇文章主要介紹了Android實現(xiàn)客戶端語音動彈界面實例代碼,文章只給大家介紹了控件布局的方法,需要的朋友可以參考下
    2017-11-11
  • Android平臺基于Pull方式對XML文件解析與寫入方法詳解

    Android平臺基于Pull方式對XML文件解析與寫入方法詳解

    這篇文章主要介紹了Android平臺基于Pull方式對XML文件解析與寫入方法,結合實例形式分析了Android基于Pull方式對xml文件解析及寫入操作的步驟、原理與操作技巧,需要的朋友可以參考下
    2016-10-10
  • 詳解Flutter中網(wǎng)絡框架dio的二次封裝

    詳解Flutter中網(wǎng)絡框架dio的二次封裝

    其實dio框架已經(jīng)封裝的很好了,但是在實戰(zhàn)項目中,為了項目可以統(tǒng)一管理,還是需要對dio框架進行二次封裝。本文將詳細講解一下dio如何二次封裝,需要的可以參考一下
    2022-04-04
  • 使用Android原生WebView+Highcharts實現(xiàn)可左右滑動的折線圖

    使用Android原生WebView+Highcharts實現(xiàn)可左右滑動的折線圖

    折線圖是Android開發(fā)中經(jīng)常會碰到的效果,但由于涉及自定義View的知識,對許多剛入門的小白來說會覺得很高深,下面這篇文章主要給大家介紹了關于如何使用Android原生WebView+Highcharts實現(xiàn)可左右滑動的折線圖的相關資料,需要的朋友可以參考下
    2022-05-05
  • Android實現(xiàn)畫板、寫字板功能(附源碼下載)

    Android實現(xiàn)畫板、寫字板功能(附源碼下載)

    這篇文章主要介紹了Android實現(xiàn)畫板、寫字板功能的方法,文中給出了簡單的介紹和示例代碼,想要了解更多的朋友可以下載源碼進行學習,感興趣的朋友們下面來一起看看吧。
    2017-01-01
  • Android自定義view實現(xiàn)側滑欄詳解

    Android自定義view實現(xiàn)側滑欄詳解

    之前一直沒有寫側滑菜單的實現(xiàn)方法,今天計劃補上。手機開發(fā)中,往往存在很多功能沒處放的問題。我們可能會把功能放入一個菜單列表,但現(xiàn)在一種流行的做法是側滑菜單
    2022-11-11
  • Android自定義帶拼音音調Textview

    Android自定義帶拼音音調Textview

    這篇文章主要介紹了Android自定義帶拼音音調的Textview,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • Android使用WindowManager構造懸浮view

    Android使用WindowManager構造懸浮view

    這篇文章主要為大家詳細介紹了Android使用WindowManager構造懸浮view的具體方法,感興趣的小伙伴們可以參考一下
    2016-05-05

最新評論

乌兰察布市| 崇州市| 宁津县| 永宁县| 道真| 台湾省| 尉犁县| 墨竹工卡县| 建始县| 信阳市| 平潭县| 镇江市| 卓尼县| 台东县| 江安县| 济宁市| 安岳县| 沭阳县| 宜良县| 宁波市| 射洪县| 时尚| 吉首市| 彩票| 宁津县| 余庆县| 介休市| 定陶县| 宝兴县| 元江| 西平县| 兴文县| 正安县| 吐鲁番市| 盈江县| 塔城市| 万全县| 汕头市| 兴义市| 邻水| 拉孜县|