【ご教授願います:】 画像取得について

753 views
Skip to first unread message

mayugen

unread,
Aug 1, 2011, 2:36:09 AM8/1/11
to 日本Androidの会
bgtitle1.pngのサイズは幅:130px、高さ:218pxで作成しております。

この画像サイズをプログラムで取得したいのですが、
下記のようにしてbgtitle1の画像のサイズを取得しようとしています。

---------------------------------------------------------------------------------

static final int mInitialImages[] = {
R.drawable.bgtitle1,・・・・・
}

Bitmap bitmap = BitmapFactory.decodeResource(res,mInitialImages[0]);
int imageWidthNum=bitmap.getWidth();
int imageHeightNum=bitmap.getHeight();


System.out.println("元の画像の幅は"+imageWidthNum+"です。");
System.out.println("元の画像の高さは"+imageHightNum+"です。");

---------------------------------------------------------------------------------

結果として、

元の画像の幅は195です。
元の画像の幅は327です。

と出てきます。ちょうど1.5倍になっているのですが、getWidthとgetHeightで取得した
値の単位は、pxではないのでしょうか?
調べてみましたら、dipとなるものを発見しましたが、この単位なのでしょうか?

このあたりがよくわからず、画像をどうやって作成していいのかがわかりません。
レイアウト等もpxではなく、dipという単位で行った方がよいのでしょうか?

どなたかおわかりになりましたら、宜しくお願いいたします。

Vipper新渡

unread,
Aug 1, 2011, 3:13:06 AM8/1/11
to android-g...@googlegroups.com

たりきです。
getWidth等ではdipで返ってくるいうなので、
お望みの動作にはgetPixel(x,y)を使うのが
よいでしょう。
2011/08/01 15:36 "mayugen" <minim...@yahoo.co.jp>:

> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>

mayugen

unread,
Aug 1, 2011, 6:18:30 AM8/1/11
to 日本Androidの会
たりきさん、ありがとうございます!

dipで返ってくるというものなのですね。
getPixel(x,y)を使ってみたのですが、なんかエラーが出てしまい、
x,yには何か入れないといけないのでしょうか?
座標でしょうか?

ちょと調べてみます。

Hiroshi SAKURAI

unread,
Aug 1, 2011, 9:00:20 AM8/1/11
to android-g...@googlegroups.com
桜井と申します。

BitmapFactory.Options optsのinTargetDensityやinScaledあたりを変えると
お望みの動作になると思います。

decodeResource (Resources res, int id)を呼ぶと
optsにnullが渡されたことと同じになり、画面のdensityに応じて適当にスケールされた
Bitmapが返されます。

--
Hiroshi SAKURAI

2011/8/1 mayugen <minim...@yahoo.co.jp>:

mayugen

unread,
Aug 2, 2011, 9:50:11 PM8/2/11
to 日本Androidの会
桜井さん、ありがとうございます!
お返事が遅れましたが、試してみます!



On 8月1日, 午後10:00, Hiroshi SAKURAI <an.olive.t...@gmail.com> wrote:
> 桜井と申します。
>
> BitmapFactory.Options optsのinTargetDensityやinScaledあたりを変えると
> お望みの動作になると思います。
>
> decodeResource (Resources res, int id)を呼ぶと
> optsにnullが渡されたことと同じになり、画面のdensityに応じて適当にスケールされた
> Bitmapが返されます。
>
> --
> Hiroshi SAKURAI
>
> 2011/8/1 mayugen <minimayu...@yahoo.co.jp>:
>
>
>
> > bgtitle1.pngのサイズは幅:130px、高さ:218pxで作成しております。
>
> > この画像サイズをプログラムで取得したいのですが、
> > 下記のようにしてbgtitle1の画像のサイズを取得しようとしています。
>
> > ----------------------------------------------------------------------------------
>
> > static final int mInitialImages[] = {
> > R.drawable.bgtitle1,・・・・・
> > }
>
> > Bitmap bitmap = BitmapFactory.decodeResource(res,mInitialImages[0]);
> > int imageWidthNum=bitmap.getWidth();
> > int imageHeightNum=bitmap.getHeight();
>
> > System.out.println("元の画像の幅は"+imageWidthNum+"です。");
> > System.out.println("元の画像の高さは"+imageHightNum+"です。");
>
> > ----------------------------------------------------------------------------------
>
> > 結果として、
>
> > 元の画像の幅は195です。
> > 元の画像の幅は327です。
>
> > と出てきます。ちょうど1.5倍になっているのですが、getWidthとgetHeightで取得した
> > 値の単位は、pxではないのでしょうか?
> > 調べてみましたら、dipとなるものを発見しましたが、この単位なのでしょうか?
>
> > このあたりがよくわからず、画像をどうやって作成していいのかがわかりません。
> > レイアウト等もpxではなく、dipという単位で行った方がよいのでしょうか?
>
> > どなたかおわかりになりましたら、宜しくお願いいたします。
>
> > --
> > このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> > このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> > このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> > 詳細については、http://groups.google.com/group/android-group-japan?hl=jaからこのグループにアクセスしてください。- 引用テキストを表示しない -
>
> - 引用テキストを表示 -

Makoto Yamazaki

unread,
Aug 3, 2011, 12:23:45 AM8/3/11
to android-g...@googlegroups.com
zaki です。

Bitmap#getWidth() や Bitmap#getHeight() が返す値は、その Bitmap クラスが保持する
ビットマップデータの幅/高さをピクセル数で返します。

元の png の幅と高さに対して 1.5 倍の値になっているということは、mdpi(160dpi) の
リソースとしてアプリが保持している画像を hdpi(240dpi) の端末で扱っているのでは
ないでしょうか。drawable-mdpi など dpi を指定した drawable リソースは dpi 比率に
応じて元データがリサイズされます。

dpi に依存しない画像を扱いたいのであれば res/drawable-nodpi/ の下に置く方法があります。

2011/8/1 mayugen <minim...@yahoo.co.jp>:

> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>
>

--
YAMAZAKI Makoto

mayugen

unread,
Aug 3, 2011, 8:28:27 AM8/3/11
to 日本Androidの会
zakiさん、ありがとうございます!

画像ファイルはそうやって分けていたんですね。
勉強になりました。ありがとうございます!
Reply all
Reply to author
Forward
0 new messages