はじめに
いつもお世話になっています。
表題の件で質問があります。
iOS端末(iPhone/iPod touch) で 超巨大JPEG画像(24000x24000)を読み込む必要がありPhoto frameworkを使って以下の様な簡略化したコードで読み込ませてみたのですがUIImage=nilで返ってきて取得できません。
Objective
1 2PHAsset *myPHAsset; 3PHFetchResult *assets = [PHAsset fetchAssetsInAssetCollection:myAssetCollection options:nil]; 4if (assets.count == 0) { 5 /* nothing */ 6} 7else { 8 [assets enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { 9 myPHAsset = (PHAsset *)obj; 10 }]; 11} 12 13UIImage *originalImage = nil; 14PHImageRequestOptions *options = [[PHImageRequestOptions alloc] init]; 15options.synchronous = YES; 16options.deliveryMode = PHImageRequestOptionsDeliveryModeHighQualityFormat; // サイズ通りの画像を引っ張ってくる 17 18[[PHImageManager defaultManager] requestImageForAsset:myPHAsset targetSize:PHImageManagerMaximumSize contentMode:PHImageContentModeDefault options:options resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) { 19 originalImage = result; 20 NSLog(@"result %dx%d", result.size.width, result.size.height); 21}];
以下の様なエラーメッセージがでます。
CGBitmapContextInfoCreate: unable to allocate 2304000000 bytes for bitmap data
iPhoneのメモリが足りないのでエラーになっているのはエラー文から何となくわかるのですが、
Jpegの画像を引っ張って来ているのに bimap data とか言われるのがよく分かりません。
JPEGデータだけであるのであれば使用している画像だと10Mbyteも無いはずなので・・・・。
これはJpeg を取ってくるときに Jpeg -> bitmap -> Jpeg とPhotos frameworkがデコードをしているのでしょうか?
どの様な展開の仕方をしているのか知りたいので教えてください。
CGBitmapContextInfoCreateなんてメソッドも存在しないですし・・・。
またこの画像を開くためには端末にどれだけのメモリが必要なのでしょうか?
回答をご指示ください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/28 13:48