如何将带有图像的画布保存为PNG文件
How to save a canvas with image to a PNG file
我使用以下代码
HTML画布和图像的代码
<canvas id="myCanvas" style="display:none" width="400" height="400"></canvas>
<img id="canvasImg" />
JavaScript代码,用于从服务器获取图像并在画布上显示,然后显示图像
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
baseimage = new Image();
baseimage.src = 'what.jpg';
baseimage.onload = function() {
ctx.drawImage(baseimage,1,1);
}
var dataURL = canvas.toDataURL("image/png");
document.getElementById('canvasImg').src = dataURL;
$("#myCanvas").show();
正在显示图像,但没有"what.jpg"文件。在Canvas中文件是可见的,但是在IMG标签中什么也看不见。
你的代码有几个问题。
-
在加载并绘制jpeg图像之前调用toDataUrl,因此您获得空画布的数据URL。将示例的最后三行移动到image的处理程序函数中。
-
您正在canvas元素上调用.show(),而不是您分配给dataUrl的img元素。但是我想知道为什么你这样做,因为似乎你的意图是使用一个不可见的
<canvas>
来生成一个可见的<img>
的内容,这就是CSS样式所说的。 -
onload处理程序应该在设置src之前定义,因为当图像在浏览器缓存中时,onload函数可能在src属性设置的那一刻被调用,这是在你定义自己的加载处理程序之前。
这是固定的代码(未经测试):
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
baseimage = new Image();
baseimage.onload = function() {
ctx.drawImage(baseimage,1,1);
var dataURL = canvas.toDataURL("image/png");
document.getElementById('canvasImg').src = dataURL;
}
baseimage.src = 'what.jpg';
我认为onload调用应该出现在src.
:
baseimage = new Image();
baseimage.onload = function() {
ctx.drawImage(baseimage,1,1);
}
baseimage.src = 'what.jpg';
相关文章:
- 在Firefox中自动保存文件
- 提示用户通过AJAX调用保存文件
- 如何提供保存文件而不是从internet explorer打印文件的选项
- Basecamp的Trix WYSIWYG编辑器gem没有在Rails 4应用程序中保存文件附件
- 钛:从Android的相机/图库图像本地保存文件
- 如何使用office.js检查未保存文件的具体文件扩展名
- node-webkit:将数据导出到csv并提示用户保存文件
- 通过本地应用程序的Javascript保存文件
- 如何为使用 JSP 生成的下载文件显示“保存文件”对话框
- 在浏览器中保存文件的Javascript
- 使用数据URI提示用户保存文件
- 如何在使用php使用jquery编辑文件后保存文件
- 如何在Safari中显示保存文件对话框
- Javascript:使用ActiveXobject保存文件
- 强制浏览器在单击链接后保存文件
- 如何在javascript中将事件添加到浏览器的“保存文件”对话框中
- 谷歌浏览器扩展程序在客户端保存文件
- 在文件保护程序.js中保存文件后关闭窗口
- 保存文件选项,用于将html文件保存在系统中的给定位置
- 使用不同的扩展名保存文件