美文网首页音视频
UIImage 提取图像数据

UIImage 提取图像数据

作者: _森宇_ | 来源:发表于2019-06-12 16:57 被阅读0次

一般提取方法(RGBA)

// 提取图像数据
UIImage *srcImage = [UIImage imageNamed:@"test"];
CGImageRef cgImage = [srcImage CGImage];
CFDataRef data = CGDataProviderCopyData(CGImageGetDataProvider(cgImage));
const unsigned char *rgba = CFDataGetBytePtr(data);

// 释放内存
CFRelease(data);

去除 alpha 通道的(RGB)

// 提取 RGBA 图像数据,可以用上面的方法,但是内存占用会大些
UIImage *srcImage = [UIImage imageNamed:@"test"];
CGImageRef image = [srcImage CGImage];
CGSize size = srcImage.size;
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
int pixelCount = size.width * size.height;
uint8_t* rgba = malloc(pixelCount * 4);
CGContextRef context = CGBitmapContextCreate(rgba, size.width, size.height, 8, 4 * size.width, colorSpace, kCGImageAlphaPremultipliedLast);
CGContextDrawImage(context, CGRectMake(0, 0, size.width, size.height), image);
CGContextRelease(context);

// 移除 alpha 通道
uint8_t* rgb = malloc(pixelCount * 3);
int m = 0;
int n = 0;
for(int i=0; i<pixelCount; i++){
    rgb[m++] = rgba[n++];
    rgb[m++] = rgba[n++];
    rgb[m++] = rgba[n++];
    n++;
}
free(rgba);

// 使用完之后释放内存
free(rgb);

相关文章

  • UIImage 提取图像数据

    一般提取方法(RGBA) 去除 alpha 通道的(RGB)

  • UIImage And NSTimer

    UIImage UIImage是用来显示图像的对象。我们可以通过文件、接收到原始的数据或者Quartz图像对象来创...

  • iOS 图片压缩

    (UIImage )zipNSDataWithImage:(UIImage )sourceImage{//进行图像...

  • UIImage学习笔记

    UIImage UIImage派生自NSObject,是用于管理应用程序中图像数据的对象。可以使用image对象来...

  • cifar 图像分类

    前言 cifar-9 分类图像数据集是从cifar10图像数据集中提取出的包含9个分类的图像数据集,cifar图像...

  • 21-Swift之UIImage

    1、UIImage 介绍 UIImage 图像/图片;它是一个数据体,不能直接展示到视图上,必须借助图片的视图容器...

  • ios UIImage 圆形图片剪切方案

    @interface UIImage (Resize) //按形状切割图像 (UIImage*)cutImageW...

  • 关于 CGImageSource详解

    CGImageSource初步了解 是图片的数据读取类,常见的UIImage本质只有图像数据,而图片是包含好多信息...

  • 修改图片

    // 改变图像的尺寸,方便上传服务器 - (UIImage *) scaleFromImage: (UIImage...

  • iOS获取屏幕图像

    //获得屏幕图像 - (UIImage *)imageFromView: (UIView *) theView {...

网友评论

    本文标题:UIImage 提取图像数据

    本文链接:https://www.haomeiwen.com/subject/pvnlfctx.html