为什么更改画布大小后必须重绘图像
Why do I have to redraw the image after changing the canvas size?
我正在尝试创建一个小型模因生成器,允许用户使用他/她想要的任何URL并更改图像的大小。 一切都按应有的方式工作,但我注意到,如果画布上已经有图像并且用户决定更改画布大小,则该图像将被"擦除"。 为什么会发生这种情况,有没有办法防止它发生?
.JS
window.onload = function(){
var canvas = document.getElementById("main");
var ctx = canvas.getContext("2d");
var open_image = document.getElementById("open_in_new_window");
var change_img_size = document.getElementById("change_img_size");
var get_canvas_width = canvas.getAttribute("width");
var get_canvas_height = canvas.getAttribute("height");
var image = new Image();
image.onload = function(){
ctx.drawImage(image, 0, 0, canvas.width, canvas.height);
console.log("Image drawn");
}
open_image.addEventListener("click", function(){
var user_img = document.getElementById("input_url").value;
image.src = user_img;
console.log(user_img);
})
change_img_size.addEventListener("click", function(){
var set_canvas_width = document.getElementById("change_img_width").value;
var set_canvas_height = document.getElementById("change_img_height").value;
console.log(set_canvas_width, set_canvas_height);
canvas.setAttribute("width", set_canvas_width);
canvas.setAttribute("height", set_canvas_height);
})
}
.HTML
<canvas id="main" width="450" height="550"></canvas>
<div id="user_actions">
<input type="text" id="input_url" placeholder="Input image location." />
<input type="text" id="change_img_width" placeholder="Change image width." />
<input type="text" id="change_img_height" placeholder="Change image height." />
<button id="open_in_new_window">View Image</button>
<button id="change_img_size">Change Image Size</button>
</div>
这是一支笔
规范的相关部分:
当用户代理要将位图尺寸设置为宽度和高度时, 它必须运行以下步骤:
将呈现上下文重置为其默认状态。
清除临时位图的命中区域列表及其挂起列表 接口操作。
将临时位图调整为新的宽度和高度,并将其清除为 全透明黑色。
如果呈现上下文具有输出位图和临时位图 是与输出位图不同的位图,然后调整输出大小 位图到新的宽度和高度,并将其清除为完全透明 黑。
您可以在调整画布大小之前尝试 getImageData((,然后在之后放置 ImageData((,但我不确定同源策略是否允许它。
如果您不需要更改画布的固有大小,则可以更改canvas.style.width
和canvas.style.height
,这不会擦除画布。
相关文章:
- 如何使用url加载程序在webpack中导入多个图像
- nodejs-expressjs上传图像并显示它们
- Canvas Html5绘图应用程序,移动画布会导致重大问题
- 使用JSP从服务器检索和显示图像
- 角度:在ng重复上切换图像
- 画廊图像未显示
- Phonegap-(安卓/iphone)多个图像的图像库出现问题
- Javascript排序的图像弹出窗口..可以't单独弹出
- 画布数据到图像
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 图像上的HTML绘图地图(圆圈)
- 用绘图/笔触/绘画在画布上显示图像
- jq绘图到图像
- 加载图像以在 javascript 中的画布上绘图
- 如何利用织物画布上的背景图像获取绘图路径中的图像
- 我如何在谷歌地图上添加自己的图像或绘图选项
- FabricJS绘图图像消失
- 如何在我的绘图图像上重叠一个画布圆圈,并设置cordinate和event
- HTML5 Canvas将绘图保存为图像
- 使用Reportgrid作为绘图库,如何在线形图的数据点上显示图像而不是形状