首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PicHandle到CGImageRef

PicHandle到CGImageRef
EN

Stack Overflow用户
提问于 2010-10-04 23:51:38
回答 1查看 785关注 0票数 0

这个项目是一个支持核心图形的通用C++插件。我无法成功地将PicHandle转换为CGImageRef。从CFDataRef中保存图像会导致图像不好。

代码语言:javascript
复制
    if(pic)
{
    Handle thePictureFileHandle;
    thePictureFileHandle = NewHandleClear(512); 
    HandAndHand((Handle)pic,thePictureFileHandle);

    dataProvider= CGDataProviderCreateWithData(NULL,(void*)*thePictureFileHandle,GetHandleSize( (Handle)thePictureFileHandle ),NULL );
    CFDataRef data = CGDataProviderCopyData(dataProvider);
    CGImageSourceRef source = CGImageSourceCreateWithDataProvider(dataProvider, NULL);
    if ( source )
    {
        cgImageRef = CGImageSourceCreateImageAtIndex(source, 0, NULL);
    }
    CGDataProviderRelease(dataProvider);
    CFRelease( source );
    CFRelease( data );
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-10-05 00:17:26

CGImageSourceCreateImageAtIndex中,您需要传递字典,说明您的数据是一个PICT。请参阅苹果文档here。你需要做一些事情,比如

代码语言:javascript
复制
CFDictionaryRef   myOptions = NULL;
CFStringRef       myKeys[1];
CFTypeRef         myValues[1];

myKeys[0] = kCGImageSourceTypeIdentifierHint;
myValues[0] = (CFTypeRef)kUTTypePICT;
myOptions = CFDictionaryCreate(NULL, (const void **) myKeys,
               (const void **) myValues, 1,
               &kCFTypeDictionaryKeyCallBacks,
               & kCFTypeDictionaryValueCallBacks);

cgImageRef = CGImageSourceCreateImageAtIndex(source, 0, myOptions);

CFRelease(myOptions);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3856872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档