【发布时间】:2018-06-22 21:51:34
【问题描述】:
我有一个紧凑的 canvas-to-png 下载保护程序功能(参见下面的代码)。 这段代码运行良好,我对它的输出很满意......主要是。 第二个替换就足够了吗?那个替换会是什么样子? 我唯一的其他选择是使用 imagemagick 对文件进行后处理。 有什么想法吗?
更完整:我想从 javascript 添加元数据。 我找到了这个链接http://dev.exiv2.org/projects/exiv2/wiki/The_Metadata_in_PNG_files 其中详细说明了结构,我可能有足够的时间才能弄清楚。 如果有人有经验并且可以为我缩短这个,我将不胜感激。
//------------------------------------------------------------------
function save () // has to be function not var for onclick to work.
//------------------------------------------------------------------
{
var element = document.getElementById("saver");
element.download = savename;
element.href = document.
getElementById(id.figure1a.canvas).
toDataURL("image/png").
replace(/^data:image\/[^;]/,'data:application/octet-stream');
}
【问题讨论】:
-
你想达到什么目的?第二个
.replace()的目的是什么?现有的.replace()调用的目的是什么? -
您不会对 base64 编码数据使用字符串替换。您可能希望将数据重新转换为二进制格式并操作字节(即通过Typed arrays)
-
我的代码改编自我找到的“最佳”示例,用于将画布保存到我的下载目录中的 png 文件。我不完全理解。我的猜测是替换将格式转换为可传输的形式。该代码运行良好。我的目标是添加我想要的所有元数据,以便生成的 png 文件在“tEXt”块中具有标题、作者、描述和所有其他可用的元数据。生成 CRC 是我唯一认为自己做这件事的未知障碍。我仍然很想找到已经这样做的示例代码。
-
实验并同意guest271314。我删除了替换,它工作正常。
标签: javascript html5-canvas png