【发布时间】:2014-09-03 05:53:17
【问题描述】:
我正在开发一个用于创建拼贴画的应用程序 - 用户可以选择并加载图片到一组 ImageViews,然后他可以缩放和移动它们并保存它,例如到相册。所以,我对保存图像的质量有疑问 - 它很低!我使用将视图转换为位图的方法,并缩放视图以适应 2000x2000 大小,但是,我想,缩放不会提高图像的质量 - 它就像那个视图的屏幕截图(我转换为位图),我只需缩放此快照 - 因为它我的图像输出质量低(
那么,伙计们,我可以从视图中获得更高质量的图像而不是快照吗?
这是我转换视图ti位图的方法:
public static Bitmap loadBitmapFromView(ScalingFrameLayout drawingCanvas, int width, int height, Bitmap.Config config) {
/**
* Get previous state
* */
ViewGroup.LayoutParams prevParams = drawingCanvas.getLayoutParams();
/**
* Scale to
* */
drawingCanvas.setScaleX((float) width / (float) prevParams.width);
drawingCanvas.setScaleY((float) height / (float) prevParams.height);
/**
* Create disarable layout size
* */
drawingCanvas.setLayoutParams(new RelativeLayout.LayoutParams(width, height));
drawingCanvas.measure(
RelativeLayout.MeasureSpec.makeMeasureSpec(drawingCanvas.getLayoutParams().width,
RelativeLayout.MeasureSpec.EXACTLY),
RelativeLayout.MeasureSpec.makeMeasureSpec(drawingCanvas.getLayoutParams().height,
RelativeLayout.MeasureSpec.EXACTLY));
drawingCanvas.layout(0, 0, drawingCanvas.getMeasuredWidth(),
drawingCanvas.getMeasuredHeight());
/**
* Create bitmap according a size
* */
Bitmap overAllDrawing = Bitmap.createBitmap(width, height, config);
/**
* Draw layout on bitmap
* */
Canvas canvas = new Canvas(overAllDrawing);
drawingCanvas.draw(canvas);
/**
* Set previous layout params
* */
drawingCanvas.setScale(1);
drawingCanvas.setLayoutParams(prevParams);
return overAllDrawing;
}
【问题讨论】: