1个不稳定版本
使用旧的Rust 2015
0.1.0 | 2022年8月23日 |
---|
#489 in 图像
23,484每月下载量
用于8个crate(5个直接使用)
105KB
1.5K SLoC
rust-icns
这是mdsteele/rust-icns的一个分支。
Rust库,用于编码/解码Apple Icon Image (.icns)文件。
概述
icns
crate实现了ICNS文件的读取和写入,将图像编码和解码成ICNS图标家族,将这些图像转换为其他像素格式(如果需要将图像数据传输到另一个期望特定格式的库),并将这些图像保存到PNG文件或从PNG文件加载。
crate文档提供了更多关于如何使用此库的信息。
示例用法
extern crate icns;
use tauri_icns::{IconFamily, IconType, Image};
use std::fs::File;
use std::io::{BufReader, BufWriter};
fn main() {
// Load an icon family from an ICNS file.
let file = BufReader::new(File::open("16.icns").unwrap());
let mut icon_family = IconFamily::read(file).unwrap();
// Extract an icon from the family and save it as a PNG.
let image = icon_family.get_icon_with_type(IconType::RGB24_16x16).unwrap();
let file = BufWriter::new(File::create("16.png").unwrap());
image.write_png(file).unwrap();
// Read in another icon from a PNG file, and add it to the icon family.
let file = BufReader::new(File::open("32.png").unwrap());
let image = Image::read_png(file).unwrap();
icon_family.add_icon(&image).unwrap();
// Save the updated icon family to a new ICNS file.
let file = BufWriter::new(File::create("16-and-32.icns").unwrap());
icon_family.write(file).unwrap();
}
支持的图标类型
ICNS文件可以包含多种不同的图标类型。此库支持最常用的类型,但一些较旧的类型尚未支持。下表显示了当前支持的类型;有关每种类型的更多信息,请参阅https://en.wikipedia.org/wiki/Apple_Icon_Image_format#Icon_types。
当前最大的限制是,许多较新的图标类型可以使用PNG或JPEG 2000数据进行编码,但此库尚不支持JPEG 2000;尝试解码此类图标将返回错误值(尽管您仍然可以从同一ICNS文件中解码其他图标)。原因是我目前不知道有任何Rust的JPEG 2000库;如果有,请随时提交错误报告或发送拉取请求。
OSType | 描述 | 支持? |
---|---|---|
ICON |
32×32 1位图标 | 不支持 |
ICN# |
32×32 1位图标,带1位蒙版 | 不支持 |
icm# |
16×12 1位图标,带1位蒙版 | 不支持 |
icm4 |
16×12 4位图标 | 不支持 |
icm8 |
16×12 8位图标 | 不支持 |
ics# |
16×16 1位蒙版 | 不支持 |
ics4 |
16×16 4位图标 | 不支持 |
ics8 |
16x16 8位图标 | 不支持 |
is32 |
16×16 24位图标 | 是 |
s8mk |
16x16 8位蒙版 | 是 |
icl4 |
32×32 4位图标 | 不支持 |
icl8 |
32×32 8位图标 | 不支持 |
il32 |
32x32 24位图标 | 是 |
l8mk |
32×32 8位蒙版 | 是 |
ich# |
48×48 1位蒙版 | 不支持 |
ich4 |
48×48 4位图标 | 不支持 |
ich8 |
48×48 8位图标 | 不支持 |
ih32 |
48×48 24位图标 | 是 |
h8mk |
48×48 8位蒙版 | 是 |
it32 |
128×128 24位图标 | 是 |
t8mk |
128×128 8位蒙版 | 是 |
icp4 |
16x16 32位 PNG/JP2 图标 | 仅 PNG |
icp5 |
32x32 32位 PNG/JP2 图标 | 仅 PNG |
icp6 |
64x64 32位 PNG/JP2 图标 | 仅 PNG |
ic07 |
128x128 32位 PNG/JP2 图标 | 仅 PNG |
ic08 |
256×256 32位 PNG/JP2 图标 | 仅 PNG |
ic09 |
512×512 32位 PNG/JP2 图标 | 仅 PNG |
ic10 |
512x512@2x "retina" 32位 PNG/JP2 图标 | 仅 PNG |
ic11 |
16x16@2x "retina" 32位 PNG/JP2 图标 | 仅 PNG |
ic12 |
32x32@2x "retina" 32位 PNG/JP2 图标 | 仅 PNG |
ic13 |
128x128@2x "retina" 32位 PNG/JP2 图标 | 仅 PNG |
ic14 |
256x256@2x "retina" 32位 PNG/JP2 图标 | 仅 PNG |
许可
rust-icns 在MIT 许可证下提供。
依赖关系
~88–315KB