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();

然后你可以设置当前图像的 src,

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

然后是所需的大小

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

注意: startX 和 startY 将是屏幕上的目标坐标,您的图像将被绘制到 endX endY 坐标。并用 Canvas 画出你的小人

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