2017-12-03 4 views
0

これに助けを求めること。私はサーバーに画像を投稿しようとしており、PNGファイルのbase64エンコーディングが必要です。 PAWアプリを使用して画像をエンコードすると、すべてが美しくサーバー上に表示されます。私がiOS Swift 4で同じことをしようとすると、生成される文字列は似ていますが、違いがあり、したがって間違った画像もあります。 iOSのPAWアプリで正しく作成された文字列をどのように一致させるかの考え。私は、作成された文字列(小さなサンプル)のスクリーンショットとともに以下のコードを含めました。iOS PAWアプリBase64エンコーディングと異なるSwift base64エンコーディング

ありがとうございます!

let image : UIImage = UIImage(named:"STG.png")! 
    let imageData = UIImagePNGRepresentation(image) 
    var base64String = imageData?.base64EncodedString(options: []) 

Paw image

enter image description here

答えて

0

Okはいくつかのウサギの穴を掘り下げて、これに似た問題を抱える人々を見つけました。私は最終的に、ネイティブurlsessionを使用する代わりにAlamofireに切り替えて解決しました。私はまた私が私の要求のために使用し終わったmultipart/form-dataのために許可するために私が掲示していたサーバを見つけました。私はネイティブurlsessionを使用して動作させることができませんでした。

1

あなたはまったく同じデータを比較されていません。 pngをUIImageにロードしてから、UIImageを新しいpng表現に変換しても、同じバイトセットになることはありません。

変換を行わずに、Dataインスタンスに直接pngファイルを読み込む必要があります。

let imageURL = Bundle.main.url(forResource: "STG", withExtension: "png")! 
let imageData = try! Data(contentsOf: imageURL) 
var base64String = imageData.base64EncodedString(options: []) 

base64EncodedStringの呼び出しで別のオプションを試す必要がある場合もあります。

+0

これは絶対に正しいです。 PNGが同じ入力 'UIImage'に対して同じバイトを返すことを保証するものは何もありません。 –

+0

ありがとう、私は私のコンピュータに戻ってみるときにそれを試してみましょう。 – riverbayMark

+0

残念ながら、以前とまったく同じ文字列が得られます。さらに、[.endLineWithCarriageReturn、.endLineWithLineFeed]というオプションも追加しましたが、それも何も変更されませんでした。 – riverbayMark

関連する問題