2009-07-08 6 views
4

実際にNSString内に保持されているバイト配列からUIImageを作成しようとしています。NSStringに保持されているバイトのUIImage

どうすればいいですか?ここで

は私がやって考えていたものです。

NSString *sourceString = @"mYActualBytesAREinHERe="; 
//get the bytes 
const char *bytesArray = [sourceString cStringUsingEncoding:NSASCIIStringEncoding]; 
//build the NSData object 
NSData *data = [NSData dataWithBytes:bytesArray length:[sourceString length]]; 
//create actual image 
UIImage *image = [UIImage imageWithData:data]; 

問題はは常に0x0の(ゼロ)であるイメージです。

何か提案がありがとうございます。

ありがとうございます!

答えて

13

イメージを文字列に変換するには、NSDataをbase64エンコードされた文字列に変換して戻す方法が必要です(多くの例がhere)。

UIImage* image = [UIImage imageWithData:[NSData 
      dataFromBase64EncodedString: pictureDataString]]; 
+0

ありがとうございました。あなたの答えの第二の部分は、私が後にしたものです。 – nicktmro

+0

NSDataのbase64Encodingメソッドは使用できなくなりました –

0

[UIImage imageWithData:data];は、渡されるデータを理解できない場合はnilを返します。私はバイナリ文字列がある種のエンコーディング(base64など)なしで純粋な画像データを保持することは奇妙です。文字列エンコーディングとバイナリエンコーディングは互換性がありません。

0

私はあなたの画像データを賭けは、いくつかのヌルを持っています

UIImage* pic = [UIImage imageNamed:@"sample.png"]; 
NSData* pictureData = UIImagePNGRepresentation(pic); 
NSString* pictureDataString = [pictureData base64Encoding]; 

はあなたが逆のコンバータを必要とする他の道を行くために:最も簡単なものは、あなたがこのような何かを行うことができNSData上にあるカテゴリを使用するにはそこにある文字(0x00)とそれが文字列の終端文字であることを知っているので、Cの文字列を尋ねるときには、おそらく道が狭すぎます。

- (NSData *)dataUsingEncoding:(NSStringEncoding)encodingのようなものを試してみてください。 を使用してNSDataを生成します。

これが機能しない場合は、データをNSString(null文字が埋め込まれている)に設定してもデータの損失が発生していないかどうかを評価する必要があります。他の回答者の1、おそらくベース64と同様に

(IMGデータを転送する文字列を使用することが要件である場合)、あなたのデータを符号化することは良いでしょう

幸運。

関連する問題