2011-06-30 9 views
8

iOSアプリでは、画像のサイズ(幅/高さ)に基づいて画像フィルタを提供する必要があります。Google画像検索では「大、中、小」 。リストを作成するときに各イメージを開き、その寸法を読むことは非常にパフォーマンスが重くなります。画像そのものを開かずにこの情報を得る方法はありますか?あなたはそれを達成するためにImageIOでを使用することができますiOS:画像を開くことなく画像を取得する方法

NSURL *imageURL = [NSURL fileURLWithPath:imagePath]; 
if (imageURL == nil) 
    return; 

CGImageSourceRef imageSourceRef = CGImageSourceCreateWithURL((CFURLRef)imageURL, NULL); 
if(imageSourceRef == NULL) 
    return; 

CFDictionaryRef props = CGImageSourceCopyPropertiesAtIndex(imageSourceRef, 0, NULL);  
CFRelease(imageSourceRef); 

NSLog(@"%@", (NSDictionary *)props); 

CFRelease(props); 
+0

賛否両論は何ですか? –

+0

いいえ、もともとこの質問に答えていた人は質問を全く理解しておらず、攻撃的だったので、私は彼をSO改造者に報告しました。彼は私に彼の復讐を取ったかもしれません;-) –

答えて

9

ダミアン・ドゥビルは、私は今、次のコードを使用しています、彼の提案に基づいて、以下の質問に答えました。

イメージURLがある場合(またはファイルパスからNSURLに+ fileURLWithPathを持つURLを作成する場合)、CGImageSourceCreateWithURLを使用してイメージソースを作成できます(URLをCFURLRefにキャストする必要があります)。

イメージソースを取得したら、CGImageSourceCopyPropertiesAtIndexを呼び出すことでイメージのプロパティのCFDictionaryRefを取得できます(これは再びNSDictionaryにキャストすることができます)。あなたが得るのは、pixelHeightとpixelWidthを含むイメージに関するたくさんのプロパティを持つ辞書です。

インデックスとして0を渡すことができます。インデックスには、サムネイルやgifのような複数のフレームなど、さまざまな画像が埋め込まれている画像があるためです。

イメージソースを使用すると、イメージ全体をメモリに読み込む必要はなく、そのプロパティにもアクセスできます。

フレームワークをインポートしてプロジェクトに追加しますか?

+3

ありがとう、うまくいきます、私は使用したコードを含めるために私の質問を編集しました。 –

0

ただ1ほか:代わりに[NSURL fileURLWithPath:IMAGEPATH]: あなたはhttp://www.example.com/image.jpgのようなウェブのURLを使用したい場合は、その後、 [IMAGEPATH NSURL URLWithString]を使用する必要があります。

関連する問題