2011-07-13 3 views
8

iPhoneでNSDataを写真ライブラリに直接保存するためにassestライブラリを使用して画像データを画像データの後ろに追加して、画像ライブラリを保存しました。今私はそれを読むためにNSDataとしてフォトライブラリからイメージを読み返したいと思います。私はUIImageとしてそれを読んで、それはイメージの中のデータを変更します。iPhone、フォトライブラリからNSDataとしてイメージを読み込む方法はありますか?

フォトライブラリからNSDataとして写真を読み取るにはどうすればよいですか? 4.1で参照URLを調べてみましたが、運はありませんでした。

編集:NSDataとして保存する理由を説明するために編集しました。答えのURLメソッドは純粋なNSDataだけが必要な場合には機能しますが、私が求めているコンテキストでは役に立ちません。

編集2:getBytesの答えが私のためにした答えでした。私が使用したコードは:

int8_t *bytes = malloc([representation size]); 
NSUInteger length = [representation getBytes:bytes fromOffset:0 length:[representation size] error:&error]; 

これは私にNSData形式で追加した画像コードPLUSを与えたファイルの中に私にすべてを手に入れることができました。

編集3:

AssetLibraryを置き換えPHPhotoLibraryとiOSの10で、今これを行う方法はありますか?私はNSDataの画像を元のRAW画像に変更する必要があります。

+0

あなたは、なぜあなたがたNSDataとして保存フォトライブラリに画像を保存したい場合は?それをUIimageとして保存します。 –

+0

イメージタグが終了した後、イメージに隠しメッセージを追加しているのでNSDataとして保存します。 – SolidSnake4444

答えて

3

あなたはALAssetRepresentationのgetBytesメソッドになります。 これにより、画像の元のRAW画像データが得られます。画像を一度にメモリに読み込むのではなく、バッファを使用して画像を処理することもできます。 もちろん、getBytesメソッドからいつでもNSDataを生成することができます。

乾杯、

ヘンドリック

+0

アップルは私がそれらに尋ねたときこれを言いました、あなたがどこから始めるべきかというアイデアを得ることができるコード例を私に与えることができますか?追加されたメッセージが画像データより長くなるため、getBytesメソッドの長さをどのように定義すればよいでしょうか。ファイルの長さの変数の終わりはありますか? – SolidSnake4444

+0

Nvm、元の投稿を更新したコードサンプルで更新しました。ご提案いただきありがとうございます。これらの答えはどちらも、画像ピッカーからの画像からNSDataを取得しましたが、これは画像のNSDataだけでなくファイル全体を私に渡すことができました。 – SolidSnake4444

+0

AssetLibraryを置き換えるクラスであるPHPhotoLibraryを使用してiOS 10でこれを行う方法を知っているとは思いませんか? – SolidSnake4444

1

すでにあなたのALAssetを持っている場合は、次を使用して、デフォルトの表現のNSDataを得ることができる必要があります:

NSData *data = [NSData dataWithContentsOfURL:[[asset defaultRepresentation] url]]; 
+1

これは私にイメージのNSDataを与えますが、イメージコードが終了した後にイメージに追加されるNSDataを取り除きます。私は追加されたデータが、コンピュータに電子メールで送信され、テキストファイルとして表示されたときに表示されるイメージにあることを知っています。ただし、あなたのコードは画像ピッカーの画像のNSDataバージョンを提供しているので、画像ピッカーの画像からNSDataを必要とする他の人にとっては、このメソッドが動作します。しかし、私が探しているもののコンテキストでは、これは動作しません。あなたが完全なファイルを取得する方法に関するアイデアがあれば教えてください。 – SolidSnake4444

関連する問題