麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 系統 > Android > 正文

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

2020-04-11 12:41:46
字體:
來源:轉載
供稿:網友

實例: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);  
        //通過位圖工廠,創建一個位圖  
        final Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_android); 
        imageView1.setImageBitmap(bitmap); 
        //為“轉換為灰度圖”按鈕添加監聽事件  
        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]; //通過位圖的大小創建像素點數組  

        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);
        //通過位圖工廠,創建一個位圖
        final Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_android);
        imageView1.setImageBitmap(bitmap);
        //為“轉換為灰度圖”按鈕添加監聽事件
        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]; //通過位圖的大小創建像素點數組

     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>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久国产精 | 羞羞的动漫在线观看 | 亚洲成人第一页 | 韩国一级免费视频 | 欧美日韩亚州综合 | www.99热视频 | 久久久久久久高清 | 久久久成人精品视频 | 一级做受毛片免费大片 | 二区三区四区视频 | 欧美成人一区二区三区 | china对白普通话xxxx | 成人一级免费视频 | 黄视频免费在线观看 | 免费在线观看午夜视频 | 久久亚洲精品久久国产一区二区 | 免费网站看v片在线a | 一级免费a| 国产永久免费观看 | 免费看污视频在线观看 | 最新av免费网址 | h视频在线观看免费 | 日韩视频一二区 | 久久免费综合视频 | 久久久久久亚洲综合影院红桃 | 国产亚洲综合一区二区 | 久久情爱网 | 久久久久久久久久久一区 | 欧美激情第一区 | 久久久一区二区精品 | 黄色一级毛片免费看 | 18欧美性xxxx极品hd | 久久精品视频一区二区三区 | av在线影片 | 国产一区二区三区欧美 | 亚洲影院在线 | 国产精品一区二区x88av | 国产精品欧美久久久久一区二区 | 免费一区二区三区 | 精品国产一区二区三区四区在线 | 亚洲成人中文字幕在线 |