iOS 遍历图片像素

像素是位图的基本组成单位,是图片上的一个个小方块,这些小方块都有一个明确的位置和被分配的色彩数值,小方格颜色和位置就决定该图像所呈现出来的样子。
我们平时在iOS开发里面使用的图片就是位图。

项目需要计算图片透明像素的百分比,所以需要遍历像素,这里图片是RGBA的颜色模式,:

-  (void)searchEveryPixelFroImage:(UIImage *)image {

    CGImageRef imgref = image.CGImage;
   //   获取图片宽高(总像素数)
    size_t width = CGImageGetWidth(imgref);
    size_t height = CGImageGetHeight(imgref);
   // 每行像素的总字节数
    size_t bytesPerRow = CGImageGetBytesPerRow(imgref);
  // 每个像素多少位(RGBA每个8位,所以这里是32位)         ps:(一个字节8位)
    size_t bitsPerPixel = CGImageGetBitsPerPixel(imgref);
    CGDataProviderRef dataProvider = CGImageGetDataProvider(imgref);
    CFDataRef data = CGDataProviderCopyData(dataProvider);
    
    UInt8 *buffer = (UInt8*)CFDataGetBytePtr(data);// 图片数据的首地址
    
    //遍历
    for (int j = 0; j < height; j++) {
        for (int i = 0; i < width; i++) {
             //每个像素的首地址    
            UInt8 *pt = buffer + j * bytesPerRow + i * (bitsPerPixel/8);
           
             UInt8  red = *pt;
             UInt8  green = *(pt+1);   //指针向后移动一个字节
             UInt8  blue = *(pt+2);
             UInt8  alpha = *(pt+3);
            NSLog(@"red:%d, green:%d,blue:%d,alpha:%d",red,green,blue,alpha);
        }
    }
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。