2011-05-30 18 views
2

イメージのサイズを見つけようとしていますが、メモリに読み込まないようにしています。私はいくつかの比較を行う、今流れてコードビットマップサイズを計算する方法は?

BitmapFactory.Options o = new BitmapFactory.Options(); 
o.inJustDecodeBounds = true; 
BitmapFactory.decodeResource(a.getResources(), R.drawable.icon, o); 
int width1 = o.outWidt;  
int height1 = o.outHeight; 

を使用します。

Bitmap icon = BitmapFactory.decodeResource(a.getResources(), R.drawable.icon); 
int width = icon.getWidth(); 
int height = icon.getHeight(); 

幅、高さがWIDTH1とheight1と等しくないのはなぜ?

+0

これら二つの画像のサイズを修正するのですか? {幅、高さ}または{幅1、高さ1} – f20k

+0

画像の元のサイズは幅1と高さ1です。 – Misko

+0

イメージはおそらくdpiに基づいてリサイズされています。そのため、常にInScaled = falseを指定してBitmapFactory.Optionsでイメージを読み込みます。あなたは、2つのビットマップのdpiをチェックし、それらを比較することができるはずです。彼らが異なっているかどうかを確認してください – f20k

答えて

0

何が起きているのかわかりませんが、実際にビットマップを返すときにBitmapFactoryが密度スケーリングを適用することがあります(here)。そのサイズをデコードしているだけではありません。 (これが起こっている場合は、バグレポートを提出することを検討したい)

drawablesディレクトリからdrawables-nodpiに画像を移動することでこの理論をテストできます。