-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuild.rs
More file actions
36 lines (30 loc) · 1.21 KB
/
build.rs
File metadata and controls
36 lines (30 loc) · 1.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
use std::{env, error::Error, fs::File, io::BufWriter};
use ico::{IconDir, IconDirEntry, IconImage};
use image::GenericImageView;
use winresource::WindowsResource;
fn convert_png_to_icon(png_path: &str, icon_path: &str) -> Result<(), Box<dyn Error>> {
let png = image::open(png_path)?;
let (width, height) = png.dimensions();
let rgba_data = png.to_rgba8();
let icon_image = IconImage::from_rgba_data(width, height, rgba_data.into_raw());
let mut icon_dir = IconDir::new(ico::ResourceType::Icon);
icon_dir.add_entry(IconDirEntry::encode(&icon_image)?);
let file = File::create(icon_path)?;
let mut writer = BufWriter::new(file);
icon_dir.write(&mut writer)?;
Ok(())
}
fn main() {
//普通图片转换成icon
convert_png_to_icon("./ui/images/logo.png", "./ui/images/logo.ico").expect("icon_set_fail1");
if env::var("CARGO_CFG_WINDOWS").is_ok() {
WindowsResource::new()
.set_icon("./ui/images/logo.ico")
.compile()
.expect("icon_set_fail");
}
//icon图标嵌入二进制文件
slint_build::compile("ui/app-window.slint").expect("Slint build failed");
//普通图片转换成icon
//icon图标嵌入二进制文件
}