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
が null であり、CGImageSourceGetCount(sourceRef)
0 を返すことです。ただし、データ プロバイダーにはかなりの量のデータが含まれており、データは有効な画像データのように見えます。はALAsset
、iPhone 4S のカメラ ロールから取得されます。
私は何が欠けていますか?CGImageSourceCreateWithDataProvider()
が 0 画像の画像ソースを作成するのはなぜですか?