iOS 取得CGimage字节数据的方法
通过我在网上搜索和总结,目前看来,我发现两种比较方便的方式。
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字节数据的方法的更多相关文章
- iOS中常用的四种数据持久化方法简介
iOS中常用的四种数据持久化方法简介 iOS中的数据持久化方式,基本上有以下四种:属性列表.对象归档.SQLite3和Core Data 1.属性列表涉及到的主要类:NSUserDefaults,一般 ...
- 最全的iOS数据存储方法
目的 项目准备运用的Core Data进行本地数据存储,本来打算只写一下Core Data的,不过既然说到了数据存储,干脆来个数据存储基础大总结!本文将对以下几个模块进行叙述. 沙盒 Plist Pr ...
- iOS常见的几种加密方法(base64.MD5.Token传值.系统指纹验证。。加密)
普通加密方法是讲密码进行加密后保存到用户偏好设置中 钥匙串是以明文形式保存,但是不知道存放的具体位置 一. base64加密 base64 编码是现代密码学的基础 基本原理: 原本是 8个bit 一组 ...
- 使用多字节字符集的跨平台(PC、Android、IOS、WP)编码/解码方法
随着移动端的发展,跨平台已成为通讯架构设计的重要考虑因素,PC.Android.IOS.WP等跨多平台间的数据通讯,必然要解决字符编码/解码的问题. 多字节字符集MBCS不是跨平台的首选字符集,面向跨 ...
- java——获取从控制台输入的数据的方法
一.使用标准输入串System.in System.in.read(); //一次只读入一个字节数据,但是我们往往希望获得的是一个字符串或者一组数字 二.使用Scanner获得一个字符串或一组 ...
- iOS开发网络篇—数据缓存
iOS开发网络篇—数据缓存 一.关于同一个URL的多次请求 有时候,对同一个URL请求多次,返回的数据可能都是一样的,比如服务器上的某张图片,无论下载多少次,返回的数据都是一样的. 上面的情况会造 ...
- iOS开发 GET、POST请求方法(NSURLSession篇)
NSURLConnection,在iOS9被宣布弃用,本文不使用NSURLConnection进行网络编程,有兴趣的童鞋可以参考: [iOS开发 GET.POST请求方法(NSURLConnectio ...
- iOS开发 GET、POST请求方法(NSURLConnection篇)
Web Service使用的主要协议是HTTP协议,即超文本传输协议. HTTP/1.1协议共定义了8种请求方法(OPTIONS.HEAD.GET.POST.PUT.DELETE.TRACE.CONN ...
- FU-A分包方式,以及从RTP包里面得到H.264数据和AAC数据的方法。。
[原创] RFC3984是H.264的baseline码流在RTP方式下传输的规范,这里只讨论FU-A分包方式,以及从RTP包里面得到H.264数据和AAC数据的方法. 1.单个NAL包单元 12字节 ...
随机推荐
- 402. Remove K Digits
(English version is after the code part) 这个题做起来比看起来容易,然后我也没仔细想,先速度刷完,以后再看有没有改进. 用这个来说: 1 2 4 3 2 2 1 ...
- 初学scala2——case class
case class,样例类,有人也叫条件类. 例如: case class Person(name:String, age:Int) 好用之处: 1.新建类实例不用new Person(..),直接 ...
- 软中断与硬中断 & 中断抢占 中断嵌套
参考了这篇文章:http://blog.csdn.net/zhangskd/article/details/21992933 从本质上来讲,中断是一种电信号,当设备有某种事件发生时,它就会产生中断,通 ...
- C# 模拟用户登录
, data.Length); newStream.Close(); request.CookieContainer ...
- 用ISE14.7引用功能强大的UltraEdit编写Verilog
对于FPGA初学者来说,使用FPGA编译软件所带的编辑器写代码已经完全够用,但随着工程的不断增大,ISE自带的编辑器用起来显得有点力不从心,所以本文中我将为大家分享一款功能强大的编辑软件UltraEd ...
- css3实践—创建3D立方体
css3实践-创建3D立方体 要想实现3D的效果,其实非常简单,只需指定一个元素为容器并设置transform-style:preserve-3d,那么它的后代元素便会有3D效果.不过有很多需要注意的 ...
- OC的单例模式的实现
下面是在ARC,GCD下的单例模式实现: 头文件里申明类方法getInstance: #import <Foundation/Foundation.h> @interface Single ...
- 刚才建立一个 swift 中文讨论社区,欢迎大家參与讨论
http://www.chinaswift.me 主要目的是收集 swift学习资源
- oracle 常用博客网址
使用oradebug修改数据库scn – 提供专业ORACLE技术咨询和支持@Phone13429648788 - 惜分飞 Solaris上使用DTrace进行动态跟踪 老熊的三分地-Oracle及数 ...
- myeclipse一些技巧
ctrl+h-----------------查找字符串 ctrl+A 全选→ctrl+shift+f 代码格式化,排版 ctrl+shift+O 自动引用