2 个版本
0.1.2 | 2023年7月16日 |
---|---|
0.1.1 |
|
0.1.0 | 2023年7月6日 |
#2192 in 解析器实现
180KB
561 行
icns-rs
ICNS格式是Apple用于存储macOS应用程序图标的文件格式。这个crate提供了一种简单的API来读取和(很快)写入ICNS文件。
路线图
- 编写ICNS文件
- 读取ICNS文件
使用方法
以下是如何读取ICNS文件的一个简单示例
您可以在
examples/encode.rs
中找到此示例或使用以下命令运行它cargo run --example encode
use std::fs::File;
use std::io::prelude::*;
use image::open;
use icns_rs::{IcnsEncoder, IconFormats};
fn main() -> std::io::Result<()> {
// Open the image
let image = match open("example.png") {
Ok(image) => image,
Err(e) => {
println!("Error opening file: {}", e);
return Ok(());
}
};
// Create the encoder
let mut encoder = IcnsEncoder::new();
encoder.data(image);
encoder.formats(IconFormats::recommended());
// Encode the image
let data = match encoder.build() {
Ok(data) => data,
Err(e) => {
println!("Error encoding image: {}", e);
return Ok(());
}
};
// Write data to file
let mut file = File::create("example.icns")?;
file.write_all(&data)?;
Ok(())
}
许可证
本项目采用GPLv3许可证。有关更多详细信息,请参阅LICENSE文件。
贡献
欢迎贡献!请随意打开一个问题或提交一个pull请求。
致谢
本项目深受以下项目的启发
- Python包:icnsutil
- JavaScript包:@fiahfy/icns
- JavaScript PackBits实现:@fiahfy/packbits
- 维基百科页面:Wikipedia: Apple Icon Image Format
当我开始构建这个项目时,我不知道已经有了一个用于Rust的ICNS库,但在查看它之后,由于缺乏ARGB、RGB和掩码支持,它不符合我的标准。我想创建一个易于使用且API简单的现代包。我还想确保它有良好的文档和测试套件。我希望您使用这个包时享受的程度和我制作它时一样!
依赖
~5MB
~60K SLoC