Android规模画布不起作用

时间:2016-09-18 00:31:59

标签: java android canvas bitmap

我正在尝试制作一个照片裁剪应用程序,我想加载一个大尺寸的图像并将其缩放到480宽度和800高度(保持纵横比),但问题是如果我缩放位图缩小图像,当我保存它的结果质量低,所以我决定缩放它的画布以保持位图的原始大小。 我需要保持原始尺寸,但缩放图像以适应屏幕?

这是我的代码:

public void setBitmap(Bitmap bitmap) {

finalBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);
myCanvas = new Canvas(finalBitmap);
myCanvas.drawBitmap(bitmap, 0, 0, null);
myCanvas.scale(scaleFactor,scaleFactor);
isLoaded = true;
}

绘制方法:

protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    if (isLoaded)
        canvas.drawBitmap(finalBitmap, 0, 0, null);

}

我用0.9f,480,......改变了scalefactor,但是没有它们对位图有影响

1 个答案:

答案 0 :(得分:0)

您的代码应如下所示

canvas.save();
canvas.scale(mScaleFactor, mScaleFactor);
canvas.drawBitmap(bitmap, 0, 0, null);
canvas.restore();

另一种选择是使用drawBitmap为您进行缩放,并进行以下调用canvas.drawBitmap (Bitmap bitmap, Rect src, Rect dst, Paint paint)