2013-12-07 107 views
5

保存图像时,我使用此代码将图像保存在Javascript:缺少扩展从帆布

window.location.href = grid.toDataURL("image/png").replace("image/png", "image/octet-stream"); 

代码工作,但保存没有任何扩展名的文件,我必须手动进行重命名。

我的问题是如何将扩展名放在最后?

谢谢。

回答

7

toDataURL产生一个data-uri而不是文件名,所以在这种情况下扩展名不适用。

data-uri只是一些二进制内容的文本编码版本,某些浏览器可以将其作为文件读取 - 数据流如果您愿意的话。由于数据流没有任何文件名,因此无法附加文件名。

您可以解决此通过设置锚标记是这样的:

<a id="imageLink" href="data-uri-here" download="myFilename.png"> 
    Click to download 
</a> 

在JavaScript中,您可以设置这些属性动态:

imageLink.href = grid.toDataURL(); 
imageLink.download = 'myOtherFilename.png'; 
+0

非常酷的东西!谢谢;)有没有其他的方式来产生这个,而不是在HTML中声明链接?我用我的按钮dat-gui库,我不知道如何创建下载attr。 – mickaelb91

+0

@ mickaelb91当然,您可以简单地在JavaScript中创建标签。还有自动触发点击的选项。检查出来:http://stackoverflow.com/questions/18480474/how-to-save-an-image-from-canvas/18480879#18480879 – K3N