怀旧图片处理

 int pixColor = 0;    
        int pixR = 0;    
        int pixG = 0;    
        int pixB = 0;    
        int newR = 0;    
        int newG = 0;    
        int newB = 0;    
        int[] pixels = new int[width * height];    
        //获取图片的像素(一维数组)  
        /* 
         * pixels      接收位图颜色值的数组  
         * offset      写入到pixels[]中的第一个像素索引值  
         * stride      pixels[]中的行间距个数值(必须大于等于位图宽度)。可以为负数  
         * x                               从位图中读取的第一个像素的x坐标值。  
         * y           从位图中读取的第一个像素的y坐标值  
         * width      从每一行中读取的像素宽度  
         * height    读取的行数   
         */  
        bitmap.getPixels(pixels, 0, width, 0, 0, width, height);    
        //获取一个高height宽width的图片像素  
        for (int i = 0; i < height; i++)    
        {    
            for (int j = 0; j < width; j++)    
            {    
                pixColor = pixels[width * i + j];   
                //等价于(pixColor >> 16) & 0xFF  获取一个像素的R  
                pixR = Color.red(pixColor);  
                //等价于(pixColor >> 8) & 0xFF   获取一个像素的G  
                pixG = Color.green(pixColor);   
                //等价于(pixColor) & 0xFF   获取一个像素的B  
                pixB = Color.blue(pixColor);    
                //根据算法由原图的RGB生成新的RGB  
                newR = (int) (0.393 * pixR + 0.769 * pixG + 0.189 * pixB);    
                newG = (int) (0.349 * pixR + 0.686 * pixG + 0.168 * pixB);    
                newB = (int) (0.272 * pixR + 0.534 * pixG + 0.131 * pixB);   
                //由RGB生成一个像素  
                //函数:argb (int alpha, int red, int green, int blue)   
                int newColor = Color.argb(255, newR > 255 ? 255 : newR, newG > 255 ? 255 : newG, newB > 255 ? 255 : newB);    
                pixels[width * i + j] = newColor;    
            }    
        }    
        //生成新的图片  
        bitmap.setPixels(pixels, 0, width, 0, 0, width, height);   
转自:http://blog.csdn.net/sjf0115/article/details/8699407
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值