计划
- 使用
std::fs
库遍历目录下的所有图片文件。 - 使用
image
库加载每个 PNG 图片。 - 裁剪每个图片为两个部分。
- 将裁剪后的图片保存到文件系统中。
代码
# 在 Cargo.toml 中添加依赖项
[dependencies]
image = "0.23.14"
use image::{GenericImageView, ImageBuffer, Rgba};
use std::fs;
use std::path::Path;
fn main() -> Result<(), Box<dyn std::error::Error>> {
// 指定要遍历的目录
let dir_path = "./images";
// 遍历目录下的所有文件
for entry in fs::read_dir(dir_path)? {
let entry = entry?;
let path = entry.path();
// 检查文件是否为 PNG 图片
if path.extension().and_then(|s| s.to_str()) == Some("png") {
// 加载 PNG 图片
let img = image::open(&path)?;
// 获取图片的宽度和高度
let (width, height) = img.dimensions();
// 裁剪图片的左半部分
let left_half = img.crop_imm(0, 0, width / 2, height);
let left_half_path = path.with_file_name(format!(
"{}_left_half.png",
path.file_stem().and_then(|s| s.to_str()).unwrap()
));
left_half.save(left_half_path)?;
// 裁剪图片的右半部分
let right_half = img.crop_imm(width / 2, 0, width / 2, height);
let right_half_path = path.with_file_name(format!(
"{}_right_half.png",
path.file_stem().and_then(|s| s.to_str()).unwrap()
));
right_half.save(right_half_path)?;
}
}
Ok(())
}
说明
- 在
Cargo.toml
文件中添加image
库的依赖项。 - 使用
std::fs::read_dir
遍历指定目录下的所有文件。 - 检查文件是否为 PNG 图片。
- 使用
image::open
加载 PNG 图片。 - 使用
img.dimensions()
获取图片的宽度和高度。 - 使用
img.crop_imm
裁剪图片的左半部分并保存为*_left_half.png
。 - 使用
img.crop_imm
裁剪图片的右半部分并保存为*_right_half.png
。
请确保在运行代码之前安装了 image
库,并且在指定的目录(例如 ./images
)下有一些 PNG 图片文件。
如果文章或资源对您有帮助,欢迎打赏作者。一路走来,感谢有您!
txttool.com 说一段 esp56物联 查询128 IP查询