一、android获取图片的主要方法。

  (1)、利用BitmapFactory.decode..各种方式获取资源、sd卡的图片,从这可以看出android都是以位图的形式加载的图片的,jpg、png等形式的图片都会转化为位图的格式。

  (2)、利用Bitmap.create来创建图片,制定位图的存储格式

二、android 中位图的像素的获取和处理。

  (1)、获取像素采用bitmap.getPixel(x,y),获取得到图像的像素值。

  (2)、采用bitmap.setPixel(x , y , argb)来设置图像的像素。这个方法会抛出2个异常,主要是当我们获取的图片不可mutable(修改、改变)时就会这样,处理的方法是利用Bitemap.create创建一张图片,然后来处理创建的图片。

三、获取图片的r、g、b三个图像分量的值。

  获取图像r、g、b三个通道的值一般采用移位操作来获得:方法如下

             int argb = bitmap.getPixel(j , i );int r =( argb>>16)&0xff;int g =( argb>>8)&0xff;int b =argb&0xff;                        

View Code

四、利用a、r、g、b三个分量合成一个像素值(a为alpha值表示图像透明度)。

首先你得看图片的格式,是几个byte的,如android 中额度bitmap有 ALPHA_8(1个字节)、RGB_565(2个字节)、ARGB_4444(Deprecated 2个字节)、ARGB_8888(4个字节)。java中还有3个字节的,下面用四个字节的为例:

  1、直接利用像素的整数值合成:通过打印alpha的默认值是255,即完全不透明。

public Bitmap getTranslateImage(Bitmap bitmap , int alpha)//alpha 0 - 255
    {int w = bitmap.getWidth();int h = bitmap.getHeight();Bitmap bitmap2 = Bitmap.createBitmap(w , h , Bitmap.Config.ARGB_8888);for(int i = 0 ; i < h ; i++)for(int j = 0 ; j < w; j ++){int argb = bitmap.getPixel(j , i );int r =( argb>>16)&0xff;int g =( argb>>8)&0xff;int b =argb&0xff;int a =(argb>>24)&0xff;System.out.println("a的值:"+a);int rgb =((a*256+r) * 256 + g) * 256 + b; bitmap2.setPixel(j , i , rgb);}return  bitmap2;}

View Code

  2、第二种方式就是利用移位操作:

 public Bitmap getTranslateImage(Bitmap bitmap , int alpha)//alpha 0 - 255
    {int w = bitmap.getWidth();int h = bitmap.getHeight();Bitmap bitmap2 = Bitmap.createBitmap(w , h , Bitmap.Config.ARGB_8888);for(int i = 0 ; i < h ; i++)for(int j = 0 ; j < w; j ++){int argb = bitmap.getPixel(j , i );int r =( argb>>16)&0xff;int g =( argb>>8)&0xff;int b =argb&0xff;int a =(argb>>24)&0xff;int rgb =(a<<24)|(r<<16)|(g<<8)|b;bitmap2.setPixel(j , i , rgb);}return  bitmap2;}

View Code

Note:这里是android下的图像处理,与java里的还是有些不同的,android处理的是位图,采用的是无符号编码。java中的 BufferedImage.TYPE_3BYTE_BGR占3个字节的像素的格式,最高位是符号位,转换时候需要考虑最高位为1后就得用负数表示。并且java处理不同的图片格式,如jpg等图片时候getRed是不支持返回int的因此用object作为返回类型。具体可参见:http://blog.csdn.net/fykhlp/article/details/6204714

public BufferedImage getGrayPicture(BufferedImage originalImage)  {  int green=0,red=0,blue=0,rgb;  int imageWidth = originalImage.getWidth();  int imageHeight = originalImage.getHeight();  for(int i = originalImage.getMinX();i < imageWidth ;i++)  {  for(int j = originalImage.getMinY();j < imageHeight ;j++)  {
//图片的像素点其实是个矩阵,这里利用两个for循环来对每个像素进行操作  Object data = routeImage.getRaster().getDataElements(i, j, null);//获取该点像素,并以object类型表示  red = routeImage.getColorModel().getRed(data);  blue = routeImage.getColorModel().getBlue(data);  green = routeImage.getColorModel().getGreen(data);  red = (red*3 + green*6 + blue*1)/10;  green = red;  blue = green;
/*
这里将r、g、b再转化为rgb值,因为bufferedImage没有提供设置单个颜色的方法,只能设置rgb。rgb最大为8388608,当大于这个值时,应减去255*255*255即16777216
*/  rgb = (red*256 + green)*256+blue;  if(rgb>8388608)  {  rgb = rgb - 16777216;  }
//将rgb值写回图片
    routeImage.setRGB(i, j, rgb);  }  }  return originalImage;     }  

View Code

转载于:https://www.cnblogs.com/bokeofzp/p/6054997.html

android中获取图片、获取图片像素、处理像素等基础知识相关推荐

  1. android 图像对比,Android中比较两个图片是否一致的问题

    在Fragment界面中,设置两个图片一致如下: 默认设置图片为: binding.ivArrow.setImageResource(R.drawable.icon_down); 先获取默认图片,再和 ...

  2. android图片gif动画效果,android中类似于gif 实现图片的动画效果

    案例:实现gif动画效果,连续播放图片 由于是转载的,也就没必要多说,直接上代码 案例:在android中实现gif动态图片的效果: EarthAnimationActivity.java packa ...

  3. android获去活动,从android中的上下文获取活动

    从android中的上下文获取活动 这个让我难过. 我需要在自定义布局类中调用activity方法. 这个问题是我不知道如何从布局中访问活动. ProfileView public class Pro ...

  4. Android中实现平铺图片

    转载请标明出处:一片枫叶的专栏 最近开发App,美工设计了一个有锯齿边沿效果的背景图,只给了我一个锯齿,然后需要平铺展示锯齿效果: android中实现平铺图片有两种方式: (1)在drawable中 ...

  5. android添加图片按钮,如何给Android中的按钮添加图片功能

    在layout中建一个my_login.xml文件 代码如下 android:layout_width="fill_parent" android:layout_height=&q ...

  6. Android中显示gif动态图片

    在android中显示一个静态图片比如png jpg等等都很方便,但是如果要显示一个gif 动态图片就需要进行一些处理. 本文是采用自定义view 然后进行重新onDraw方法来实现 首先自定义Vie ...

  7. 在Android中绘制圆角矩形图片

    圆角矩形图片在苹果的产品中很流行,相比于普通的矩形,很多人都喜欢圆角矩形的图片,下面在Android中实现将普通的矩形图片绘制成圆角矩形.        先来看一下普通矩形图片的显示,代码很简单,从r ...

  8. Android中绘制圆角矩形图片及任意形状图片

    转自http://blog.csdn.net/silangquan/article/details/8056583 圆角矩形图片在苹果的产品中很流行,相比于普通的矩形,很多人都喜欢圆角矩形的图片,因为 ...

  9. android matrix 实现点击旋转,Android中利用matrix 控制图片的旋转、缩放、移动

    本文主要讲解利用android中Matrix控制图形的旋转缩放移动,具体参见一下代码: /** * 使用矩阵控制图片移动.缩放.旋转 */ public class CommonImgEffectVi ...

  10. Android 中 Base64 转换成 图片

    场景 项目中有个功能是显示微信付款码,为了节省服务器存储,将图片以Base64的形式存储,客户端接收到后将Base64转换成图片并加载,但是不要存放大图,在网上看到的大多都是使用了一个java库(im ...

最新文章

  1. 标准c语言怎么绘图,C语言绘图问题
  2. 在linux中如何高效的使用帮助
  3. python服务器搭建 实战_实战讲解:如何用Python搭建一个服务器
  4. BroadcastReceiver 广播机制详解
  5. mysql修改数据存放位置_Mysql 修改数据库存放位置
  6. Quartz入门指南
  7. codevs 1422 河城荷取
  8. Kubernetes的调度机制
  9. Linux网络协议栈(一)——Socket入门(2)
  10. php 高并发接口,接口高并发解决方案
  11. 记一次有趣的诱导安装
  12. R中报错ERROR: configuration failed for package ‘magick’
  13. win7锁屏壁纸更改方法 win7怎么设置锁屏壁纸
  14. vc 热键、组合键的用法 MFC c++ hotkey WM_HOTKEY
  15. Jenkins 添加配置Git账号密码凭据
  16. 把计算机信息传到电视屏的方法,如何将电脑内容投屏到电视上?当贝市场完整版教程...
  17. 数据分析报告流程展现
  18. Moleskine笔记本使用之感受【个人管理篇】
  19. Flex元素自适应布局
  20. Makefile 读书笔记

热门文章

  1. HTTP将死?又拍云布局HTTPS 护航网页安全加速
  2. 提示YOU DON'T HAVE PERMISSION TO ACCESS / ON THIS的解决方法
  3. 3.2 封装成帧和透明传输
  4. 基于FPGA的几种排序算法总结
  5. DSP集成开发工具CCS的Git工具使用说明(三)
  6. 给小白图示讲解OFDM的原理
  7. VS2013和MATLAB相互调用混合编程
  8. Word中项目符号和编号用法详解
  9. 大神们请看python日期是这样转换的
  10. zabbix全网监控介绍