源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Android-如何将RGB彩色图转换为灰度图方法介绍

  • 时间:2020-05-10 00:32 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Android-如何将RGB彩色图转换为灰度图方法介绍
实例:RGB2Grey 项目运行效果图:        [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100107_0_16270.png[/img]          [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100108_1_79725.png[/img]     [b]源代码[/b]: [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>
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部