0

ビットマップ画像を壁紙として設定しようとしています!

現在、このコードを使用してそれを完了しています。

            WallpaperManager wpm = WallpaperManager.getInstance(this);

            float minH =  wpm.getDesiredMinimumHeight();
            float minW =  wpm.getDesiredMinimumWidth();
            Log.d("seb", minH + " = Min Height");
            Log.d("seb", minW + " = Min Width");
            targetBitmap = Bitmap.createScaledBitmap(targetBitmap,(int)minW, (int)minH, false);         
            wpm.setBitmap(targetBitmap);

できます!電話は画面に合わせてビットマップのサイズを自動的に変更しますが、ビットマップがどれほど小さいかは関係なく、常に水平方向にトリミングされて拡大されます。

これを修正する方法を知っている人はいますか?

(1つの修正は、実際の写真の代わりに黒い境界線を配置してトリミングすることですが、より良い代替手段があると推測しています)

編集

これは原画です

これはコードの元の画像です。

次の図は、壁紙に設定されたときに切り取られたという意味です。

トリミングされた画像

これは、システムが画面全体に合わせて画像を自動的に拡大するため、画像のサイズを変更しても同じです。

4

1 に答える 1

0

さて、「コメント」での議論の後、ここにうまくいく解決策があります。

それを試してください:

public Bitmap getResizedBitmap(Bitmap bm, int newHeight, int newWidth) {

    int width = bm.getWidth();

    int height = bm.getHeight();

    float scaleWidth = ((float) newWidth) / width;

    float scaleHeight = ((float) newHeight) / height;

// create a matrix for the manipulation

    Matrix matrix = new Matrix();

    // resize the bit map

    matrix.postScale(scaleWidth, scaleHeight);

// recreate the new Bitmap

    Bitmap resizedBitmap = Bitmap.createBitmap(bm, 0, 0, width, height, matrix, false);

    return resizedBitmap;

}

試してみて、同じ (または別の) 問題が発生した場合は、お知らせください。修正に努めます。

于 2013-01-28T08:44:51.337 に答える