3

我敢肯定这很简单,但我就是找不到。

我正在尝试CGImageDestinationRef使用该CGImageDestinationCreateWithData函数创建一个,但它返回给我一个零。

函数文档:

http://developer.apple.com/library/ios/documentation/GraphicsImaging/Reference/CGImageDestination/Reference/reference.html#//apple_ref/c/func/CGImageDestinationCreateWithData

该函数非常简单,但我似乎无法让它返回一个对象。我在一个 ARC 类中,所以函数周围有一个桥接包装器。

我的代码片段:

NSMutableData *data = [[NSMutableData alloc] init];
CGImageDestinationRef imageDestination = nil;

imageDestination = (__bridge CGImageDestinationRef) CFBridgingRelease(CGImageDestinationCreateWithData ((__bridge CFMutableDataRef)data, (__bridge CFStringRef)type, 1, NULL));

if (!imageDestination)
    NSLog(@"This is always called. :-(");

如果有人发现我做一些愚蠢的事情,我将不胜感激!

4

1 回答 1

3

我已经解决了它并在这里发布答案,因为它可能会在未来帮助其他人。

我有一个类型设置为@“image/jpg”,这似乎不起作用(文档建议它应该这样做)。

当我将类型更改为@“public.jpeg”时,该函数开始按预期工作。

在下面的评论中使用 Jim 的提示,这就是我最终从 URL 中找到正确的 UTI 类型的方法:

NSString *uti = CFBridgingRelease(UTTypeCreatePreferredIdentifierForTag(kUTTagClassMIMEType, (__bridge CFStringRef)[NSString stringWithFormat:@"image/%@", url.pathExtension], kUTTypeImage));

于 2012-07-03T10:14:00.300 回答