2016-07-15 14 views
1

ImageViewで画像のサイズをピクセル単位で取得しようとしていますが、その幅はオリジナルのjpgファイルの幅の3倍以上です。ImageViewでピクセル単位で画像を取得する

寸法が800×600のjpgファイルを入れましたが、下のコードはその幅として2400を表示しています。

Bitmap bitmap = ((BitmapDrawable)imgv.getDrawable()).getBitmap(); 
float fwidth = bitmap.getWidth(); 
Log.d("width0", Float.toString(fwidth)); 

私は再びJPGファイルのサイズを確認したが、それは(800×600)に変更されなかった、 私はまた、溶液の検索が、上記のコードは、他のユーザーの経験にビットマップの正しい寸法を表示します。

私は間違って何をしましたか? 誰かに私に助言を与えることができますか?

ありがとうございました。

+0

「私は間違って何をしましたか?おそらく、コンテナの幅に合わせてImageViewを伸ばしているでしょう。 –

答えて

1

これは、ウェブサイトで見つかったソリューションではありません。

元の画像を拡大縮小しないようにリソースをデコードするときに、Option値を変更する必要がありました。私は2つではなく、decodeResource関数に3つのパラメータを使用しなければなりませんでした。

もちろん、3番目のパラメータは、スケールされない元のビットマップを指定するオプションです。ビットマップのgetWidth()関数を呼び出すと、今は800になります。

   Resources res = getResources(); 
       int id = R.drawable.map10; 
       BitmapFactory.Options options = new BitmapFactory.Options(); 
       options.inScaled = false; 
//    options.inSampleSize = 3; 
       Bitmap bb = BitmapFactory.decodeResource(res, id, options); 

       float fwidth = bb.getWidth(); 
0

あなたImageViewに設定されていることを、確認してください: heightwrap_content widthwrap_content scaleTypeなし

+1

...私はすでに私のコメントで言ったことです。 –

+0

あなたの指示に従いました、wrap_contentと縮尺のタイプはありません、ありがとう、しかしそれはまだ同じです。また、私はsetImageMatrix、getImageMatrix、matrix.postScaleを使ってイメージを指でスケーリングしています。これらのコードを削除する必要がありますか?私はそれらがImageViewのスケールタイプを変更しているのではないかと心配しています。 (私がsetScaleType()を使用したのと同じように) – Solek

+0

はい、私はあなたが正しい画像サイズを取得すると思います。 –

関連する問題