我正在尝试使用CGImageSourceCreateThumbnailAtIndex
有效地创建图像的调整大小版本。我有一些现有代码可以使用磁盘中的图像执行此操作,现在我正在尝试使用来自ALAssetsLibrary
.
这是我的代码:
ALAsset *asset;
ALAssetRepresentation *representation = [asset defaultRepresentation];
CGImageRef imageRef = [representation fullResolutionImage];
CGDataProviderRef provider = CGImageGetDataProvider(imageRef);
CGImageSourceRef sourceRef = CGImageSourceCreateWithDataProvider(provider, NULL);
NSDictionary *resizeOptions = @{
kCGImageSourceCreateThumbnailWithTransform : @YES,
kCGImageSourceCreateThumbnailFromImageAlways : @YES,
kCGImageSourceThumbnailMaxPixelSize : @(2100)
};
CGImageRef resizedImage = CGImageSourceCreateThumbnailAtIndex(source, 0, resizeOptions);
问题是它resizedImage
为空,并CGImageSourceGetCount(sourceRef)
返回 0。不过,数据提供程序中确实有相当多的数据,而且这些数据看起来确实是有效的图像数据。来自ALAsset
iPhone 4S 相机胶卷。
我错过了什么?为什么要CGImageSourceCreateWithDataProvider()
创建一个包含 0 个图像的图像源?