0

私は画像の寸法を取得する方法を見つけようとしていたので、その方法で画像をどのように拡大縮小するかを知っていました。これの目的は、これらのメモリの問題が発生しないようにすることでした。

だから私がやっていたのは:

BitmapFactory image = new BitmapFactory();
BitmapFactory.Options opts = new BitmapFactory.Options();
image.decodeFile(_path,opts);
if(opts.outHeight > 2048 || opts.outWidth > 2048){
   opts.inSampleSize= 2;
}
VIEW.setImageBitmap(image.decodeFile(_path,opts));

問題は、最初のデコードで、デバイスに十分なメモリがない場合にエラーが発生することです。

私がやった方法は、それをtrycatchブロックに入れてから、ifにステートメントを追加しました。opts.outHeight == -1 || opts.outWidth == -1){

だから私が知りたかったのは、デコードであまりにも多くのメモリを消費することなく、私が望んでいたことを行う方法があるということでしたか?結局、元の画像の高さと幅を知る必要があるだけです。

4

1 に答える 1

1

BitmapFactory.Options optsの一部として、その事実を達成するためにtrueに設定する必要がある属性inJustDecodeBoundsがあります。

trueに設定すると、すべてのコードが正常に機能します。その大きな画像を構築するのではなく、mimetypes、outheight、outwidthなどを返すだけです。

http://developer.android.com/training/displaying-bitmaps/index.htmlにアクセスすると、さらにヘルプを入手できます。

于 2012-10-16T19:45:25.707 に答える