通过我在网上搜索和总结,目前看来,我发现两种比较方便的方式。

1. CGImage -> CGDataProvider -> CFData -> xx *

CGDataProviderRef provider =CGImageGetDataProvider(CGImage);
void*data =(void*)CFDataGetBytePtr(CGDataProviderCopyData(provider));

这样得到的就是void*类型的数据.

2. CGImage -> CGContext -> void *

int sWidth=CGImageGetWidth(CGImage);
int sHeight=CGImageGetHeight(CGImage);
CGImageRef mContent =CGImage;
CGContextRef context =CGBitmapContextCreate(NULL,CGImageGetWidth(mContent),CGImageGetHeight(mContent),
CGImageGetBitsPerComponent(mContent),CGImageGetBytesPerRow(mContent),
CGImageGetColorSpace(mContent),CGImageGetBitmapInfo(mContent));
CGContextDrawImage(context,CGRectMake(,, sWidth, sHeight), mContent);
void*data=CGBitmapContextGetData(context);

当得到CGimage的字节数据,有时又需要把它转化成UIImage.

void*data;
CGDataProviderRef pv=CGDataProviderCreateWithData(data, data, sWidth*sHeight*,ContentReleaseCallBack);
CGImageRef content=CGImageCreate(sWidth , sHeight,,,*sWidth,
CGColorSpaceCreateDeviceRGB(), kCGBitmapByteOrder32Big | kCGImageAlphaNoneSkipLast,
pv, NULL,true, kCGRenderingIntentDefault);
UIImage*ci =[UIImage imageWithCGImage:content];

以上一套方法,能正常显示图像,只是在alpha的值上和原图有些不一样转成字节数据再转换成UIImage以后,原本是透明的部分变成了黑色

UIImage *ci = [UIImage imageWithData:[NSData dataWithBytes:data length:sWidth*sHeight*]];

iOS 取得CGimage字节数据的方法的更多相关文章

  1. iOS中常用的四种数据持久化方法简介

    iOS中常用的四种数据持久化方法简介 iOS中的数据持久化方式,基本上有以下四种:属性列表.对象归档.SQLite3和Core Data 1.属性列表涉及到的主要类:NSUserDefaults,一般 ...

  2. 最全的iOS数据存储方法

    目的 项目准备运用的Core Data进行本地数据存储,本来打算只写一下Core Data的,不过既然说到了数据存储,干脆来个数据存储基础大总结!本文将对以下几个模块进行叙述. 沙盒 Plist Pr ...

  3. iOS常见的几种加密方法(base64.MD5.Token传值.系统指纹验证。。加密)

    普通加密方法是讲密码进行加密后保存到用户偏好设置中 钥匙串是以明文形式保存,但是不知道存放的具体位置 一. base64加密 base64 编码是现代密码学的基础 基本原理: 原本是 8个bit 一组 ...

  4. 使用多字节字符集的跨平台(PC、Android、IOS、WP)编码/解码方法

    随着移动端的发展,跨平台已成为通讯架构设计的重要考虑因素,PC.Android.IOS.WP等跨多平台间的数据通讯,必然要解决字符编码/解码的问题. 多字节字符集MBCS不是跨平台的首选字符集,面向跨 ...

  5. java——获取从控制台输入的数据的方法

    一.使用标准输入串System.in System.in.read();     //一次只读入一个字节数据,但是我们往往希望获得的是一个字符串或者一组数字 二.使用Scanner获得一个字符串或一组 ...

  6. iOS开发网络篇—数据缓存

      iOS开发网络篇—数据缓存 一.关于同一个URL的多次请求 有时候,对同一个URL请求多次,返回的数据可能都是一样的,比如服务器上的某张图片,无论下载多少次,返回的数据都是一样的. 上面的情况会造 ...

  7. iOS开发 GET、POST请求方法(NSURLSession篇)

    NSURLConnection,在iOS9被宣布弃用,本文不使用NSURLConnection进行网络编程,有兴趣的童鞋可以参考: [iOS开发 GET.POST请求方法(NSURLConnectio ...

  8. iOS开发 GET、POST请求方法(NSURLConnection篇)

    Web Service使用的主要协议是HTTP协议,即超文本传输协议. HTTP/1.1协议共定义了8种请求方法(OPTIONS.HEAD.GET.POST.PUT.DELETE.TRACE.CONN ...

  9. FU-A分包方式,以及从RTP包里面得到H.264数据和AAC数据的方法。。

    [原创] RFC3984是H.264的baseline码流在RTP方式下传输的规范,这里只讨论FU-A分包方式,以及从RTP包里面得到H.264数据和AAC数据的方法. 1.单个NAL包单元 12字节 ...

随机推荐

  1. hdoj 1061 Rightmost Digit【快速幂求模】

    Rightmost Digit Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  2. Python学习总结 06 paramiko 远程执行命令

    有时会需要在远程的机器上执行一个命令,并获得其返回结果.对于这种情况,python 可以很容易的实现. 1 工具 Python paramiko 1) Paramiko模块安装 在Linux的Term ...

  3. baidu

    [百度凤巢业务实习]   查看打赏情况 打赏100shb 打赏1000shb 打赏10000shb 只看此用户 大字体 楼主   百度凤巢业务--百度最核心的业务做数据挖掘,机器学习,广告算法等,主要 ...

  4. array_column php 函数 自定义版本 php_version<5.5

    <?php if(!function_exists('array_column')) { /* * array_column() for PHP 5.4 and lower versions * ...

  5. POJ 1001 Exponentiation 无限大数的指数乘法 题解

    POJ做的非常好,本题就是要求一个无限位大的指数乘法结果. 要求基础:无限大数位相乘 额外要求:处理特殊情况的能力 -- 关键是考这个能力了. 所以本题的用例特别重要,再聪明的人也会疏忽某些用例的. ...

  6. php判断http头还是https头

    $http_type = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HT ...

  7. [转] json in javascript

    JavaScript is a general purpose programming language that was introduced as the page scripting langu ...

  8. iOS原生CIFilter创建二维码

    iOS原生CIFilter创建二维码 2016-05-31 未来C iOS原生CIFilter创建二维码 关于二维码生成,网上也是有很多,很早以前的第三方库大多数都是通过C++写,也是有的如zxing ...

  9. HDU 5592 ZYB's Premutation(树状数组+二分)

    题意:给一个排列的每个前缀区间的逆序对数,让还原 原序列. 思路:考虑逆序对的意思,对于k = f[i] - f[i -1],就表示在第i个位置前面有k个比当前位置大的数,那么也就是:除了i后面的数字 ...

  10. 判断浏览器是否支持FileReader

    1.js代码: //判断浏览器是否支持FileReader if (typeof FileReader == "undefined") { document.write(" ...