2016-08-18 12 views
-1

私のギャラリーの画像が問題になります。Androidはギャラリーから画像を選択し、サイズを変更する前にサイズを変更します

実際に取り込む前にサイズを減らす方法を探しましたが、すでに存在するBitMapではなく、BitMapリソースを扱っているものの大半をまとめているだけですギャラリーで

だから、基本的に、私は

imageBitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri); 

、そのような画像を取得しかし、私は実際にそこに上で、私のビットマップVARに割り当てる前にしています私は携帯電話のための合理的なサイズに縮小する必要があります。

ここで何が起こっているのかを理解するのに役立ちます。

答えて

0

getBitmap()は弱い便利な方法です。そのボディはあまりにも4行のコードです:

public static final Bitmap getBitmap(ContentResolver cr, Uri url) 
     throws FileNotFoundException, IOException { 
    InputStream input = cr.openInputStream(url); 
    Bitmap bitmap = BitmapFactory.decodeStream(input); 
    input.close(); 
    return bitmap; 
} 

これは私がそれについて人々に教えることを嫌う理由です。

IMHOの場合、Picassoのようなmany image-loading libraries available for Androidのいずれかを使用するのが最善の解決策です。良いもののほとんどはUriからロードして、操作の一部としてサイズ変更を処理し、バックグラウンドスレッドで重い作業を行うことができます。

何らかの理由で自分で働くすべてのことをしたい場合はBitmapFactory.decodeStream()BitmapFactory.Optionsオブジェクトを呼び出します。特に、inSampleSizeに設定すると、イメージを読み込みの一部としてリサンプリングするように指定されているため、より小さなヒープスペースを占める小さなBitmapで巻き戻します。

+0

オハイオ州の男性....これはまさに私がやっていたことはビットマップを使って作業する必要はまったくなかったことに気がつきました。私はUriを直接使うことができます。 これは私が見逃していた小さな部分ですが、何をしているのか理解せずにgetBitmapメソッドを使用していたsomeonesコードを奪ったために起こりました。 ありがとう! – BrandenS

関連する問題