9

大きすぎてメモリにロードできない大きな画像がありますが、その大きな画像内のピクセルのサブセットにのみ関心があります。このピクセルのサブセットのみをメモリにデコードすることは可能ですか? Androidには、まさにこれを行うためのクラスがAPIにあり、BitmapRegionDecoderと呼ばれるものがそのようなものであることを知っています

CGDataProviderCreateSequential を見つけましたが、コンストラクターで生のピクセルが必要です...

今、私はこのようなことをしています:

UIImage* srcImage = ...;
    CFDataRef cgImgDataRef = CGDataProviderCopyData(CGImageGetDataProvider(srcImage.CGImage));//After this call, all pixels are decoded into memory and the app crashes
char* imageData = (char*)CFDataGetBytePtr(cgImgDataRef);
4

1 に答える 1

10

これが機能する可能性がある唯一の方法は、CGImageSourceCreateWithData()(またはURLが何であれ)を作成し、またはCGImageRefを使用して作成する場合です。これで、大きな画像のサブセクションを使用して引き出すことができます。CGImageCreateWithJPEGDataProviderCGImageCreateWithPNGDataProviderCGImageRefCGImageCreateWithImageInRect()

あなたがやろうとしているのが画像を並べて表示することである場合は、質問を明確にしてください.

于 2012-07-25T19:37:57.903 に答える