0

インターネットからダウンロードしましたがbitmap、品質を損なうことなくビットマップの高さと幅を減らしたいと思っていますbitmap。これを達成する方法。

これは、インターネットからビットマップをダウンロードするための方法です。

URL url_1 = null;
try {
    url_1 = new URL(vmImageUrl);
    bmp = BitmapFactory.decodeStream(url_1.openConnection().getInputStream());
    } catch (Exception e) {
    Log.v("Error while downloading bitmap from url", e.getMessage());

私はこのようにスケーリングしました。

Bitmap.createScaledBitmap(bmp, convertDpToPixel(140, context), convertDpToPixel(35, context), false);

このメソッドは、dpユニットをピクセル単位の同等のデバイス固有の値に変換します。

public static int convertDpToPixel(float dp,Context context)  
{
    Resources resources = context.getResources();
    DisplayMetrics metrics = resources.getDisplayMetrics();
    int px = (int) (dp * (metrics.densityDpi/160f));
    return px;
}
4

3 に答える 3

0

BitmapFactory.Options.inSampleSize小さいビットマップを取得するために使用します。

BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inSampleSize = 2;
Bitmap bitmap = BitmapFactory.decodeFile(YOUR_FILE, opts);
于 2012-11-28T16:24:28.633 に答える
0

これを設定しました。

Bitmap.createScaledBitmap(bmp, convertDpToPixel(140, context), VirtualMirrorActivity.convertDpToPixel(35, context), true);

それ以外の

Bitmap.createScaledBitmap(bmp, convertDpToPixel(140, context), VirtualMirrorActivity.convertDpToPixel(35, context), false);

エッジが滑らかになり、ビットマップがクリアになります。今では正常に動作しています。

于 2012-11-30T06:45:55.057 に答える
-2

あなたは2つのレクが必要です、

Rect src = new Rect();
Rect dst = new Rect();

次に、uは現在の画像のsrcを設定できます。

src.set(0,0,imgWidth,imgHeigth);

次に、必要なサイズ

dst.set(startX,startY,endX,endY);

注:startXとstartYは画面上の宛先座標になり、画像はendXendY座標に描画されます。キャンバスであなたのビットマンを描きます

Canvas.drawBitmap(bitmapFile, src, dst, null);
于 2012-11-28T16:17:42.637 に答える