6个版本

使用旧的Rust 2015

0.3.1 2020年6月5日
0.3.0 2018年11月25日
0.2.2 2017年10月25日
0.2.1 2017年3月4日
0.1.0 2016年5月12日

#170 in 图像

Download history 752/week @ 2024-03-30 773/week @ 2024-04-06 1134/week @ 2024-04-13 1129/week @ 2024-04-20 1447/week @ 2024-04-27 957/week @ 2024-05-04 990/week @ 2024-05-11 1561/week @ 2024-05-18 1143/week @ 2024-05-25 1391/week @ 2024-06-01 1394/week @ 2024-06-08 1228/week @ 2024-06-15 1263/week @ 2024-06-22 1736/week @ 2024-06-29 1050/week @ 2024-07-06 860/week @ 2024-07-13

5,104 每月下载次数
14 个crate中使用了 (11 直接)

MIT 许可证

94KB
1.5K SLoC

rust-icns

一个用于编码/解码Apple Icon Image (.icns)文件的Rust库。

文档:https://docs.rs/icns

概述

icns crate实现了读取和写入ICNS文件,将图像编码和解码到/从ICNS图标家族中,将图像转换为其他像素格式(如果您需要将图像数据传输到期望特定格式的其他库中),以及将这些图像保存/加载到/从PNG文件中。

关于如何使用库的更多信息,请参阅crate文档

示例用法

extern crate icns;
use 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 "视网膜" 32位PNG/JP2图标 仅PNG
ic11 16x16@2x "视网膜" 32位PNG/JP2图标 仅PNG
ic12 32x32@2x "视网膜" 32位PNG/JP2图标 仅PNG
ic13 128x128@2x "视网膜" 32位PNG/JP2图标 仅PNG
ic14 256x256@2x "视网膜" 32位PNG/JP2图标 仅PNG

许可证

rust-icns 在MIT许可证下提供。MIT许可证.

依赖

~88–270KB