2016-10-19 12 views
1

GIFをダウンロードして外部ストレージに保存する必要があります.MMS経由で送信できます.Messagesには300KBの制限があります.GIFのサイズが大きすぎるため、サイズを変更する必要がありますそれら。Glide - GIFをファイルにダウンロードしてサイズを変更する

私はプロジェクトの残りの部分でグライドを使用しています。グライドは理想的にはサイズ変更されたイメージをダウンロードすべき素晴らしい機能を備えています。しかし、それはしません。

要するに、ここで私は、バックグラウンドスレッド内で呼び出しているコードです:彼らは250×250ピクセルである必要があり、一方、

byte[] bytes = Glide.with(context) 
        .load(url) 
        .asGif() 
        .toBytes() 
        .into(250, 250) 
        .get(); 
file = new File(fileName); 

FileOutputStream fileWriter = new FileOutputStream(file); 
fileWriter.write(bytes); 
fileWriter.flush(); 
fileWriter.close(); 

ダウンロードしたファイルは、まだ300キロバイトのMMS限度を超えている元のサイズを維持します。

+0

使用_override(250、250)、またはbitmap' 'へbyte''変換して、所望の寸法でサイズを変更し、それを保存します。

ので、.gifファイルのサイズを変更するために、このコードを使用外部ストレージに転送します。 – Piyush

+0

オーバーライドはaynthingを実行していないようです。 byte []をビットマップに変換することはできません。 .png –

答えて

0

グライドギブスと同じ質問をして答えを得ました。明らかに、Glideは、fitCenter()(またはその他の)変換が使用されていない限り、500 x 500より大きいイメージのサイズを変更します。 _

byte[] bytes = Glide.with(context) 
         .load(url) 
         .asGif() 
         .toBytes() 
         .transform(new GifDrawableTransformation(new CenterCrop(context), Glide.get(context).getBitmapPool())) 
         .into(250, 250) 
         .get(); 
+0

変換を指定しない場合、グライドは設定したダウンサンプラー(デフォルト)を使用してイメージをダウンサンプリングします。 Androidは、2ダウンサンプリングの累乗をサポートしています。つまり、変換がなければ、サイズ変更は正確ではありません。デフォルトのダウンサンプラーは、要求されたサイズから要求されたサイズの2倍にダウンサンプルします。 http://bumptech.github.io/glide/javadocs/360/com/bumptech/glide/load/resource/bitmap/Downsampler.htmlを参照してください。 –

0

このファイルを圧縮してデータベースに保存すると、 このリンクが役立ちます。この最初の.gifから.pngに変換して使用します。 Android - Best way to convert .gif to .png

+0

として保存します。OP – Piyush

+0

にスニペットを表示しても問題ありません。外部ストレージにファイルが必要なので、MMS経由で送信することができます。 –

関連する問題