2012-03-23 6 views
0

私はbase64でエンコードにiOSのアップロード用の画像をしようとしているが、愚かな事はサポートが組み込まれていないので、私は2つのライブラリをダウンロードし、それらの両方を試してみたが、私は彼らが間違った価値を返すと思う(私が思うよりもbase64を理解しない限り)。私がダウンロードしたlibraryを使用して暗号化すると、それはこので始まる/9j/4Q+zRXhpZgAASUkqAAgAAAAKAA4BAgAgAAAAhgAAAA8BAgAFAAAApgAAABABAgAKAAiVBORw0KGgoAAAANSUhEUgAAAI0AAABnCAIAAACy41YWAABAAElEQVR4AbzdeaylyXUY9nf3 私は書かれていたテストプログラムを使用する場合ので、私は、最初のものが正しいことを100%確信してThisこのWebサイトはで始まる長い文字列を返します。サーバーをテストするために、それはサーバーにアップロードするのと同じコードで、サーバーはファイルをうまく解読してイメージを保存します。 Hereはテスト画像です。iPhoneでBase64では異なる結果を返す

基本的に、私はiPhone/iPad用に別のライブラリを入手する必要があると考えています。私が気づいた別の奇妙なことは、いくつかの画像では、文字列の最後に=があり、それ以外の文字列にはありません。私がこれについて考えることができる3つの理由があります。

1)iPhoneは、メモリが不足していると、それはちょうどそれが持っているものをアップロードして私に教えたくありません。

2)ライブラリは

3)私は混乱しているとbase64で

任意の提案を理解していないが壊れていますか?

EDIT:iPhoneが実際にシミュレータですので、コンピュータが行う前に、それがメモリ不足になる場合、私は知りません。アンドロイドエミュレータはありませんが、iOSシミュレータについてはわかりません。

+0

暗号化しないでエンコードすることを意味します。 –

答えて

5

iPhoneの出力は、(this oneなど)の標準的なbase64でデコードあたりPNGの先頭にマッピングするために表示されます。 (私は、有効なbase64で長さに「/ 9J/4Q + zRXhpZgAASUkqAAgAAAAKAA4BAgAgAAAAhgAAAA8BAgAFAAAApgAAABABAgAK」にトリミング)あなたが提供する他の選択肢はFFD8、JPEG SOIマーカで始まり、その後のExifはので、私はJPEGであると言って喜んテキストが含まれています。

誤って別のファイルをエンコードして比較する可能性はありますか?

ああ、方法によって簡単なヒント、それはあなたの仕事をテストする場合に役立ちます - iPhoneはではなく、明らかに構築されたベース64デコードを持っています。そのトリックは、ベース64エンコードされたデータURLを作成し、それをロードするようにNSDataに依頼することです。例えば。

NSData *decodedData = [NSData dataWithContentsOfURL: 
    [NSURL URLWithString: 
     @"data:;base64,/9j/4Q+zRXhpZgAASUkqAAgAAAAKAA4BAgAgAAAAhgAAAA8BAgAFAAAApgAAABABAgAK"]]; 

data:;base64,の直後にbase64データが続きます。 3年後に


補遺、:iOSの7 NSDataが直接、それ以上のデータURLを策定する必要はありませんので、-initWithBase64EncodedString:options:を提供してきましたので、。

+0

ありがとう、私はそれを考えなかったでしょう。 jpeg画像であっても、データをPNG形式で表示していました。私はjpegとして入手するように切り替えました。 – nick

関連する問題