LoginSignup
16
13

More than 5 years have passed since last update.

【Android】Bitmapのリサイズ

Posted at

基本

BitmapのリサイズにはBitmap#createScaledBitmap()を使います。

引数 説明
src Bitmap リサイズ対象のBitmap
dstWidth int リサイズ後のBitmap幅
dstHeight int リサイズ後のBitmap高さ
filter boolean リサイズ時にフィルターを使用するか

How to use

例えばアスペクト比を保ったままViewに表示できる最大サイズにリサイズを行う場合はこうなります。

// リサイズ前のBitmap
Bitmap beforeResizeBitmap;

// リサイズ比
double resizeScale;
// 横長画像の場合
if (beforeResizeBitmap.getWidth() >= beforeResizeBitmap.getHeight()) {
    resizeScale = (double) viewWidth / beforeResizeBitmap.getWidth();
}
// 縦長画像の場合
else {
    resizeScale = (double) viewHeight / beforeResizeBitmap.getHeight();
}
// リサイズ
Bitmap afterResizeBitmap = Bitmap.createScaledBitmap(beforeResizeBitmap,
        (int) (beforeResizeBitmap.getWidth() * resizeScale),
        (int) (beforeResizeBitmap.getHeight() * resizeScale),
        true);

filterについて

第四引数のfilterは有効/無効どちらにするかで、場合によってはリサイズ後の画像に大きな違いが出てきます。

実験

以下の画像で縮小表示、拡大表示を行い、それぞれでfilterの有効/無効を試してみます。

元画像
shiroha_and_umi.png

縮小

等倍表示

00_downScale_Original.png

filter有効

02_downScale_filterOn.png

filter無効

01_downScale_filterOff.png

filter有効/無効のdiff

downScale_diff.png
※真っ黒のほど差分が少ない

所感

縮小ではfilterを無効にするとジャギーがはっきりと表れる。

拡大

等倍表示

03_upScale_Original.png

filter有効

05_upScale_filterOn.png

filter無効

04_upScale_filterOff.png

filter有効/無効のdiff

upScale_diff.png
※真っ黒のほど差分が少ない

所感

拡大においてもfilterを無効にするとジャギーが表れるが、縮小と比べるとジャギー感は小さい。

まとめ的な何か

自分で拡縮を書かないならばfilterは有効にしておいた方が無難っぽい。

16
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
13