我从互联网上下载了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;
}
答案 0 :(得分:0)
使用BitmapFactory.Options.inSampleSize
获取更小的位图。
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inSampleSize = 2;
Bitmap bitmap = BitmapFactory.decodeFile(YOUR_FILE, opts);
答案 1 :(得分:0)
我设置了这个。
Bitmap.createScaledBitmap(bmp, convertDpToPixel(140, context), VirtualMirrorActivity.convertDpToPixel(35, context), true);
而不是
Bitmap.createScaledBitmap(bmp, convertDpToPixel(140, context), VirtualMirrorActivity.convertDpToPixel(35, context), false);
它给予更光滑的边缘和清除位图。现在工作正常..
答案 2 :(得分:-2)
你需要2个Rect,
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.drawBitmap(bitmapFile, src, dst, null);