#icns #icons #apple #image #image-format #file-format

icns-rs

一个用于读写Apple图标图像(.icns)文件的库

2 个版本

0.1.2 2023年7月16日
0.1.1 2023年7月16日
0.1.0 2023年7月6日

#2192 in 解析器实现

LGPL-3.0-or-later

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请求。

致谢

本项目深受以下项目的启发

当我开始构建这个项目时,我不知道已经有了一个用于Rust的ICNS库,但在查看它之后,由于缺乏ARGB、RGB和掩码支持,它不符合我的标准。我想创建一个易于使用且API简单的现代包。我还想确保它有良好的文档和测试套件。我希望您使用这个包时享受的程度和我制作它时一样!

依赖

~5MB
~60K SLoC