广告
返回顶部
首页 > 资讯 > 移动开发 >Android-如何将RGB彩色图转换为灰度图方法介绍
  • 815
分享到

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

方法rgb灰度图Android 2022-06-06 11:06:54 815人浏览 泡泡鱼
摘要

实例:RGB2Grey 项目运行效果图:            &

实例:RGB2Grey

项目运行效果图:       

         \

 

 

源代码

[java] 
public class MainActivity extends Activity { 
     
    @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)); 
            } 
        }); 
    } 
     
    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); 
   &n bsp;            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 {

   
    @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));
   }
  });
    }
   
    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>

您可能感兴趣的文章:Android提高之使用NDK把彩图转换灰度图的方法javascript实现256色转灰度图


--结束END--

本文标题: Android-如何将RGB彩色图转换为灰度图方法介绍

本文链接: https://www.lsjlt.com/news/28168.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android-如何将RGB彩色图转换为灰度图方法介绍
    实例:RGB2Grey 项目运行效果图:            &...
    99+
    2022-06-06
    方法 rgb 灰度图 Android
  • 如何利用Python将彩色图像转为灰度图像
    小编给大家分享一下如何利用Python将彩色图像转为灰度图像,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!第一种方法Python的cv2库中自带彩色转灰度的方法,...
    99+
    2023-06-22
  • 利用Python将彩色图像转为灰度图像的两种方法
    目录第一种方法第二种方法python 批量将图片转为灰度图总结第一种方法 Python的cv2库中自带彩色转灰度的方法,而且非常简单,代码就9行,核心代码就1行。 大题思路就是先读取...
    99+
    2022-11-12
  • Python中OpenCV彩色与灰度图像转换的方法
    这篇文章主要介绍Python中OpenCV彩色与灰度图像转换的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!彩色图像转换为灰度图像第一种方式通过 imread 读取图像的时候直接设置参数为 0 ,自动转换彩色图像...
    99+
    2023-06-15
  • Android提高之使用NDK把彩图转换灰度图的方法
    一般而言在Android上使用JAVA实现彩图转换为灰度图,与J2ME上的实现方法类似,不过遇到频繁地转换或者是大图转换时,就必须使用NDK来提高速度了。本文主要通过JAVA和...
    99+
    2022-06-06
    方法 ndk 灰度图 Android
  • 如何使用python opencv实现灰度图和彩色图的互相转换
    这篇文章将为大家详细讲解有关如何使用python opencv实现灰度图和彩色图的互相转换,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。opencv灰度图和彩色图互相转换如果摄像头本来就得到3维...
    99+
    2023-06-28
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作