#jpeg #png #low-level #exif #icc #image-format #container-image

无 std img-parts

用于读取和写入 Jpeg、Png 和 RIFF 图像容器的低级库

7 个版本

0.3.0 2022 年 8 月 11 日
0.2.3 2020 年 10 月 14 日
0.2.2 2020 年 9 月 17 日
0.2.1 2020 年 8 月 12 日
0.1.0 2020 年 4 月 1 日

#257 in 图像

Download history 1777/week @ 2024-03-14 2120/week @ 2024-03-21 2265/week @ 2024-03-28 2118/week @ 2024-04-04 2321/week @ 2024-04-11 2289/week @ 2024-04-18 2282/week @ 2024-04-25 2661/week @ 2024-05-02 4313/week @ 2024-05-09 14210/week @ 2024-05-16 16398/week @ 2024-05-23 27830/week @ 2024-05-30 20302/week @ 2024-06-06 14056/week @ 2024-06-13 7556/week @ 2024-06-20 4724/week @ 2024-06-27

53,685 个月下载量
用于 13 个库 (9 直接使用)

MIT/Apache

67KB
1.5K SLoC

img-parts

crates.io Documentation dependency status Rustc Version 1.40.0+ CI

img-parts 库提供了一种低级 API,用于读取和写入各种图像格式的容器,以及一种高级 API,用于读取和写入原始 ICC 配置文件和 EXIF 元数据。

它目前支持 JpegPngRIFF(以及一些 WebP 的辅助函数)。

更多示例可以在 GitHub 上的 examples 目录中找到。

读取和写入原始 ICCP 和 EXIF 元数据

use std::fs::{self, File};

use img_parts::jpeg::Jpeg;
use img_parts::{ImageEXIF, ImageICC};

let input = fs::read("img.jpg")?;
let output = File::create("out.jpg")?;

let mut jpeg = Jpeg::from_bytes(input.into())?;
let icc_profile = jpeg.icc_profile();
let exif_metadata = jpeg.exif();

jpeg.set_icc_profile(Some(another_icc_profile.into()));
jpeg.set_exif(Some(new_exif_metadata.into()));
jpeg.encoder().write_to(output)?;

修改块

use std::fs::{self, File};

use img_parts::jpeg::{markers, Jpeg, JpegSegment};
use img_parts::Bytes;

let input = fs::read("img.jpg")?;
let output = File::create("out.jpg")?;

let mut jpeg = Jpeg::from_bytes(input.into())?;

let comment = Bytes::from("Hello, I'm writing a comment!");
let comment_segment = JpegSegment::new_with_contents(markers::COM, comment);
jpeg.segments_mut().insert(1, comment_segment);

jpeg.encoder().write_to(output)?;

许可证

许可协议为以下之一

由您选择。

贡献

除非您明确说明,否则您提交给作品以包含在内的任何贡献将根据上述条款双许可,不附加任何额外条款或条件。

依赖项

~485KB