由于鄙人经常开发各类网站,需要经常用到 ico 图标,故鄙人基于 github 开源项目开发了一个 png2ico 转换器,需要 png 转 ico 的同学可以参考之。
png2icojs 是一个简单便捷的 javascript es6 类库,运用它可以将 png 转换为 ico ICO file. 它可以运行在各类主流浏览器上面
关键代码如下:
import { PngIcoConverter } from "../src/png2icojs.js";
// ...
const inputs = [...files].map(file => ({
png: file
}));
// Result is a Blob
const resultBlob1 = await converter.convertToBlobAsync(inputs); // Default mime type is image/x-icon
const resultBlob2 = await converter.convertToBlobAsync(inputs, "image/your-own-mime");
// Result is an Uint8Array
const resultArr = await converter.convertAsync(inputs);
API 公开了具有许多受保护函数的 PngIcoConverter 类,因此您可以根据需要覆盖它们。
PngIcoConverter 公开了以下方法: async convertToBlobSync (输入:IConvertInputItem[],mime=IcoMime ):Promise < Blob >; 将 PNG 文件转换为具有可选 mime 类型的 ICO Blob 。默认值:图像/x-icon 。 async convertAsync ( inputs:IConvertInputItem[]):Promise < Uint8Array >; 将 PNG 文件转换为 Uint8Array 。
IConverInputItem 具有以下属性: png:png 文件。可以是 Blob 或 ArrayBuffer 。 bpp (可选,默认为 0 ):每像素位数。用于 ICO 图像的标题。在我的实验中,大多数应用程序只是完全忽略这个值,并使用 PNG 图像中的值。 ignoreSize (可选,默认为 false ):由于 ICO 的大小字节只有 1 个字节,图标的最大大小为 256px 。然而,我已经尝试制作一个 512px 的图标,到目前为止它是有效的。如果您的图像大小超过 256px ,库仍然会抛出错误。将此设置为 true 可忽略它。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.