要求: 所以我使用 html5 画布在 iPad(2732 * 2048) 上执行绘图并存储绘制的像素,以便我可以重复使用它们。
现在,我需要通过按像素重绘来在网站上显示与缩小版本 (615 * 460) 相同的绘图。
执行
我正在使用 fabric.js 来渲染画布。
缩小规模:
- 将画布的高度和宽度乘以调整大小比例,以便将绘图缩放到原始大小。
- 强制将容器的高度和宽度固定为显示图纸所需的尺寸。
- 使用 CSS 将容器填充到其尺寸的 100%。
问题 在 Chrome 中渲染时,绘图有别名,但它在非视网膜显示器上的 Safari 中正确渲染。
也用纯画布测试过,它的行为是一样的。
在 Chrome 85 上绘图
在 Safari 14 上绘图
伪代码:(仅显示所需的设置和样式以避免复杂化)
// resizeRatio = 4.45 (2732 / 615);
canvas = new fabric.Canvas('someId');
canvas.enableRetinaScaling = false;
canvas.freeDrawingBrush.color = '#000000';
canvas.setWidth(460 * resizeRatio);
canvas.setHeight(615 * resizeRatio);
container = document.getElementbyId('container');
container.style.width = (this.width) + 'px';
container.style.height = (this.height) + 'px';
brush = new fabric.PencilBrush(canvas);
brush.width = 2.5;
// Loop over each of the coordinates using mouse events on the brush to render the
// canvas.
HTML
<div id=container style=" width: 100% !important;height: 100% !important;">
<canvas style=" width: 100% !important; height: 100% !important;" id="canvas"></canvas>.
</div>
谢谢