3 个版本 (重大变更)
0.3.0 | 2024 年 1 月 9 日 |
---|---|
0.2.0 | 2021 年 1 月 6 日 |
0.1.0 | 2020 年 11 月 5 日 |
#95 在 图像 中
4,298 每月下载量
在 27 个crate中使用 (2 直接)
275KB
6K SLoC
qcms
Firefox 用于在ICC配置文件之间转换图像数据的库。
示例
// Decode the jpeg
let mut d = jpeg_decoder::Decoder::new(std::fs::File::open("/Users/jrmuizel/Desktop/DSCF2460.jpg").unwrap());
let mut data = d.decode().unwrap();
let info = d.info().unwrap();
// Extract the profile after decode
let profile = d.icc_profile().unwrap();
// Create a new qcms Profile
let input = qcms::Profile::new_from_slice(&profile).unwrap();
let mut output = qcms::Profile::new_sRGB();
output.precache_output_transform();
// Create a transform between input and output profiles and apply it.
let xfm = qcms::Transform::new(&input, &output, qcms::DataType::RGB8, qcms::Intent::default()).unwrap();
xfm.apply(&mut data);
// write the result to a PNG
let mut encoder = png::Encoder::new(std::fs::File::create("out.png").unwrap(), info.width as u32, info.height as u32);
encoder.set_color(png::ColorType::Rgb);
encoder.set_srgb(png::SrgbRenderingIntent::Perceptual);
let mut writer = encoder.write_header().unwrap();
writer.write_image_data(&data).unwrap(); // Save
这个库最初是用C语言编写的,使用 c2rust 转换为Rust,然后重构为更安全且更符合Rust风格。