2016-09-20 6 views
-1

.loadImageSync(imageURL)メソッドを使用して私のサーバーから画像ファイルをダウンロードする場合は、Android-Universal-Image-Loaderを使用しています。保存後にアンドロイド画像ファイルのサイズが増加しました

次に、ビットマップをユーザーデバイスの外部ストレージに保存する必要があります。

ファイルファイル=新しいファイル(mContext.getExternalFilesDir(null)+ directoryIntermediatePath、fileName); FileOutputStream fileOutputStream =新しいFileOutputStream(ファイル)。 bitmap.compress(Bitmap.CompressFormat.PNG、100、fileOutputStream);

fileOutputStream.flush();

fileOutputStream.close();

私の問題は、約200KBのサイズを保持しているサーバー上の.pngファイルで、アンドロイドデバイスストレージでこのプロセスを実行すると約700KBになります。あなたはロスレスフォーマットであるPNG画像、のために、いくつかの値が100未満にbitmap.compress品質パラメータを削減しようとすることができ

+0

を100に圧縮するのではなく、70または80に変更するとサイズが小さくなります。 – SilentKiller

+0

しかし、私はどのファイルサイズがユーザーデバイス上に正確にあるのかわからないので、私はサーバーの品質とサイズが同じであることを確認したいと思います。 –

+0

@SilentKiller PNGは可逆圧縮を使用しているため、品質を低下させると効果がないとは思えません。 – Henry

答えて

-1

は、ビットマップは、品質パラメータを無視します。したがって、サイズを縮小するためにJPEGに変換するオプションがあります。 hereをチェックし、bitmap.compressの詳細については

bitmap.compress(Bitmap.CompressFormat.JPEG, 60, fileOutputStream); 

:たとえば、この行を使用しています。

PNGを使用して特定のサイズに縮小する場合は、画像のサイズを変更する必要があります。 this SOリンクが役立つことがあります。

+0

質問は.jpegファイルについてはまったく問題ではなく、.pngファイルです。そして、別のものは、それがファイルサイズを縮小ではないということです、それは程度がサーバーからダウンロードされたときに実際に保持するファイルと同じサイズを維持しています。 –

+0

@ManishJainは、ファイルサイズを小さくするためのオプションです。記憶された画像が同じフォーマットでなければならないということは疑問ではない。画像をPNG形式で保存したい場合は、前述のリンクを参考にしてください。お役に立てれば。 –

0

読み込まれたイメージをディスクに保存しないでください。代わりに、ダウンロードしたファイルを使用する必要があります。

Android-Universal-Image-Loaderライブラリは、ディスクキャッシュを使用しています。

ImageLoaderConfigurationを構築しながら、あなたが特定のDISKCACHE実装を設定する場合は、後でこのDISKCACHEにアクセスを介して、後でそれを取得することができるはずです。

File f = DiskCacheUtils.findInCache(imageURL, diskCache); 

その後、あなただけのbyte[]レベルでファイルをコピーする必要があります。

関連する問題