【发布时间】:2016-09-28 19:32:23
【问题描述】:
我有用于缩放图像的代码。要放大和缩小,请使用代码 scalePicture(1.10, drawingContext); 和 scalePicture(0.90, drawingContext);。我在离屏画布上执行该操作,然后将图像复制回原始屏幕。
我使用了屏幕外处理,因为浏览器通过使用双缓冲来优化图像操作。我仍然遇到这样的问题,即当我放大 400% 左右然后缩小回原始大小时,图像质量会显着下降。
我不依赖原图,因为用户可以进行剪辑、裁剪、旋转、注释等很多操作,我需要在原图上叠加所有操作。
任何人都可以提出一些建议/建议,以在不牺牲性能和质量的同时保持图像质量。
scalePicture : function(scalePercent, operatingCanvasContext) {
var w = operatingCanvasContext.canvas.width,
h = operatingCanvasContext.canvas.height,
sw = w * scalePercent,
sh = h * scalePercent,
operatingCanvas = operatingCanvasContext.canvas;
var canvasPic = new Image();
operatingCanvasContext.save();
canvasPic.src = operatingCanvas.toDataURL();
operatingCanvasContext.clearRect (0,0, operatingCanvas.width, operatingCanvas.height);
operatingCanvasContext.translate(operatingCanvas.width/2, operatingCanvas.height/2);
canvasPic.onload = function () {
operatingCanvasContext.drawImage(canvasPic, -sw/2 , -sh/2 , sw, sh);
operatingCanvasContext.translate(-operatingCanvas.width/2, -operatingCanvas.height/2);
operatingCanvasContext.restore();
};
}
【问题讨论】:
标签: image-processing canvas html5-canvas