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 图像
5,104 每月下载次数
在 14 个crate中使用了 (11 直接)
94KB
1.5K SLoC
rust-icns
一个用于编码/解码Apple Icon Image (.icns)文件的Rust库。
概述
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