由于个人经常开发各类网站,需要经常用到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可忽略它。
网友评论