2016-09-06 9 views
0

base64でサーバーにアップロードする前にギャラリーからファイルサイズを縮小しようとしています。私はすべての提案をstackoverflow &私はインターネット上で成功なしで見つけたどこかで試した。Android - Base64を使用してサーバーにアップロードする前にイメージファイルのサイズを小さくする

イメージが2MBを超えると、サーバーに書き込まれるとサイズが縮小されたように見えます(〜500KBまで)。しかし、画像< 500KBの場合、デコードされてサーバーに書き込まれると(元々〜500KB)元のファイルサイズよりも大きくなっているように見えます。 base64はそれを下回ることができないという限界があるようです)。本当ですか?他の方法で私はイメージファイルのサイズを減らし、プログラムでサーバーにアップロードできますか?

+0

あなたは_GZip_ – Piyush

+0

を使用できます。ファイルサイズを(オンザフライで)恒久的に減らしてサーバーに送信したいので、GZipを使用したくありません。理想的には、元のサイズとは無関係に100KB未満です。リストビューを作成するために再度取得するためです。 – adbert

+0

[this](http://stackoverflow.com/questions/37299490/android-reduce-file-size-for-camera-captured-image-to-beless-than-500-kb)を確認してください – Piyush

答えて

0
private String string(Bitmap bitmap){ 
    ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
    bitmap.compress(Bitmap.CompressFormat.PNG, 50, stream); 
    return Base64.encodeToString(stream.toByteArray(), Base64.DEFAULT); 
} 

ビットマップを文字列メソッドに渡し、Stringに変換します。 compressFormatはPNGにあり、自動的にサイズと品質を下げます。

+0

これは私が試みてきたことです。違いはPNGの代わりにBitmap.CompressFormat.JPGで試したところです。ファイルサイズが小さくなったと思う。しかし、いったんbase64でエンコードされ、サーバーに送られてディスクに書き込まれると、約500KBに拡大されます(場合によっては元のサイズより大きくなることがありました)。それは、サーバーエンドからのbase64のデコードが本当にJPGを拡張しているようです。 – adbert

+0

同じことが私に起こった。 –

関連する問題