2012-02-24 14 views
3

UIImageが使用しているRAMの量を教えてもらえる公開APIかプライベートAPIがあるかどうか不思議です。誰もそのサイズを確実に得る方法を知っていますか?特定のUIImageが使用するRAMの量を調べる方法は?

+0

[uiimageのサイズを取得する(バイトの長さ)高さと幅ではありません](http://stackoverflow.com/questions/1296707/get-size-of-a-uiimage-bytes-length-not-高さと幅) – Joe

答えて

-1

「画像にデータがないか、または基礎となるCGImageRefにサポートされていないビットマップ形式のデータが含まれていない」場合を除き、これは画像のバイト数を示します。あなたが最も簡単な解決策などUIImagePNGRepresentation

のバイト長をチェックする提案を無視することができるように

NSData *imageData = UIImagePNGRepresentation(image) 
if (imageData) 
{ 
    NSUInteger numBytes = [imageData bytes]; 
} 
+0

メモリ内の画像は圧縮されて保存されます。この場合、PNG圧縮イメージからバイト数を取得することは有効ではありません。 –

1

A UIImageのデータはCGImageRefと使用をつかむために、メモリ内の解凍データとしてされて保存されますこのコード:

- (size_t)byteSizeForImage:(UIImage *)image { 
    CGImageRef imageRef = image.CGImage; 

    size_t bitsPerPixel = CGImageGetBitsPerPixel(imageRef); 
    size_t bitsTotal = CGImageGetWidth(imageRef) * CGImageGetHeight(imageRef) * 
          bitsPerPixel; 
    size_t bytesTotal = bitsTotal/8; 
    return bytesTotal; 
} 

あなたのイメージの時間のほとんどは、RGB(ピクセルあたり3バイト)またはRGBA(ピクセルあたり4バイト)となりますので、これは通常width * height * 3またはなるように動作し。

+0

これはイメージのビットマップのサイズを示しますが、UIImageは常にビットマップをメモリに格納するとは限りません。イメージがファイルによって裏付けされている場合、CGおよび/またはUIKitは、ファイルをデコードすることによりオンデマンドでビットマップを自由に作成することができます。だから、この方法は大まかなガイドラインとして役立つかもしれませんが、100%正確ではないかもしれません。 –

+0

これは本当です。私は彼がイメージが読み込まれたら、メモリの使用量を知りたいと思うと思う。 –

関連する問題