javascript - 如何在javascript客户端将图像解析为ICO格式
问题描述
我想在前端使用 javascript 将图像 (png/jpeg) 转换为 ICO。
在网上搜索时,我在 github 上看到了这段代码:https ://gist.github.com/twolfson/7656254但不幸的是它使用fs
了 nodejs 模块(+ 代码很难理解)。
有人可以告诉我应该搜索什么/或通过在前端使用 javascript 将 png/jpeg 转换为 ico 的方法吗?
我尝试过的替代方案?
使用了这个 repo:https ://github.com/fiahfy/ico-convert但他们使用sharp和sharp在客户端不支持
解决方案
在谷歌上,我得到了这个 Mozilla 帖子,带有示例,它提供了以下转换为 ICO 格式的代码(仅限于 Firefox 浏览器),
一种将画布转换为 ico 的方法(仅限 Mozilla)
这用于
-moz-parse
将画布转换为 ico。Windows XP 不支持从 PNG 转换为 ico,因此它使用 bmp 代替。通过设置下载属性创建下载链接。下载属性的值是将用作文件名的名称。
编码:
var canvas = document.getElementById('canvas');
var d = canvas.width;
ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.moveTo(d / 2, 0);
ctx.lineTo(d, d);
ctx.lineTo(0, d);
ctx.closePath();
ctx.fillStyle = 'yellow';
ctx.fill();
function blobCallback(iconName) {
return function(b) {
var a = document.createElement('a');
a.textContent = 'Download';
document.body.appendChild(a);
a.style.display = 'block';
a.download = iconName + '.ico';
a.href = window.URL.createObjectURL(b);
}
}
canvas.toBlob(blobCallback('passThisString'),
'image/vnd.microsoft.icon',
'-moz-parse-options:format=bmp;bpp=32'
);
除此之外,我发现没有其他方法可以将 png/jpeg 转换为 ICO 格式。或者,您可以使用以下任何模块在服务器端进行转换:
推荐阅读
- java - 如何在构建谷歌操作时访问已登录谷歌用户帐户的联系人
- linux - Linux PhpStorm 无法连接到远程服务器 只有 OpenSSH 格式的 SSH2 密钥
- vaadin - Vaadin-flow 组合框如何与值更改侦听器一起使用?
- c - 在树中插入(键,值)时,节点不形成树结构
- ruby-on-rails - 在另一个表中创建一个新行,并在另一个表中更改状态
- python - 加载 keras 模型并将其缓存在变量中,而无需重新加载
- php - 如何将php数组读入变量
- xamarin.forms - Xamarin.Forms - 访问 Azure Active Directory 以进行 Microsoft 登录 - 无结果回调
- excel - 如何移动到下一个可用行 - EXCEL VBA
- mysql - 为 IP 地址列表选择最小网络