zoukankan      html  css  js  c++  java
  • 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(0,0, sWidth, sHeight), mContent);
    void*data=CGBitmapContextGetData(context);

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

    void*data;
    CGDataProviderRef pv=CGDataProviderCreateWithData(data, data, sWidth*sHeight*4,ContentReleaseCallBack);
    CGImageRef content=CGImageCreate(sWidth , sHeight,8,32,4*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*4]];
  • 相关阅读:
    nginx限速 原理
    规则引擎 图形界面
    阿里巴巴 规则引擎
    martinfowler Data Guide big data bad things
    Nginx Request URI too large
    linux2.6.30.4内核移植(1)
    根文件系统
    Linux内核配置:定制配置选项
    Linux内核配置:Kconfig
    Linux内核配置:Makefile目标
  • 原文地址:https://www.cnblogs.com/ligun123/p/3205321.html
Copyright © 2011-2022 走看看