added color to img
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
|
use image::GenericImageView;
|
||||||
use regex::Regex;
|
use regex::Regex;
|
||||||
use std::{borrow::Cow, env::args, process::exit};
|
use std::{borrow::Cow, env::args, process::exit};
|
||||||
|
|
||||||
@@ -14,9 +15,10 @@ fn main() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
let (data, name, width, height) = path_to_img(path.as_str());
|
let (data, name, width, height, color) = path_to_img(path.as_str());
|
||||||
println!("{name}:");
|
println!("{name}:");
|
||||||
if !nosize {
|
if !nosize {
|
||||||
|
println!(" D 0x{:08x}", color);
|
||||||
println!(" D {width}");
|
println!(" D {width}");
|
||||||
println!(" D {height}");
|
println!(" D {height}");
|
||||||
}
|
}
|
||||||
@@ -29,9 +31,9 @@ fn remove_non_alphanumeric(input: &str) -> Cow<'_, str> {
|
|||||||
re.replace_all(input, "")
|
re.replace_all(input, "")
|
||||||
}
|
}
|
||||||
|
|
||||||
fn path_to_img(path: &str) -> (Vec<u32>, String, u32, u32) {
|
fn path_to_img(path: &str) -> (Vec<u32>, String, u32, u32, u32) {
|
||||||
let img = match image::open(path) {
|
let (base_img, img) = match image::open(path) {
|
||||||
Ok(img) => img.to_luma8(),
|
Ok(img) => (img.clone(), img.to_luma8()),
|
||||||
Err(e) => panic!("failed to open image {path}: {e}"),
|
Err(e) => panic!("failed to open image {path}: {e}"),
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -41,11 +43,16 @@ fn path_to_img(path: &str) -> (Vec<u32>, String, u32, u32) {
|
|||||||
let mut bytes = Vec::new();
|
let mut bytes = Vec::new();
|
||||||
let mut bit = 0;
|
let mut bit = 0;
|
||||||
let mut byte = 0;
|
let mut byte = 0;
|
||||||
|
let mut color = None;
|
||||||
|
|
||||||
for y in 0..height {
|
for y in 0..height {
|
||||||
for x in 0..width {
|
for x in 0..width {
|
||||||
let pix = img.get_pixel(x, y)[0];
|
let pix = img.get_pixel(x, y)[0];
|
||||||
if pix >= 127 {
|
if pix >= 5 {
|
||||||
byte |= 1 << bit
|
byte |= 1 << bit;
|
||||||
|
if color == None {
|
||||||
|
color = Some(base_img.get_pixel(x, y));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
bit += 1;
|
bit += 1;
|
||||||
if bit == 32 {
|
if bit == 32 {
|
||||||
@@ -64,5 +71,12 @@ fn path_to_img(path: &str) -> (Vec<u32>, String, u32, u32) {
|
|||||||
"picture_{}",
|
"picture_{}",
|
||||||
remove_non_alphanumeric(&split[0..split.len() - 1].join("_")).to_lowercase()
|
remove_non_alphanumeric(&split[0..split.len() - 1].join("_")).to_lowercase()
|
||||||
);
|
);
|
||||||
(bytes, name, width, height)
|
let color = color.map_or(0, |c| {
|
||||||
|
let mut r = 0;
|
||||||
|
r |= (c[0] as u32) << 24;
|
||||||
|
r |= (c[1] as u32) << 16;
|
||||||
|
r |= (c[2] as u32) << 8;
|
||||||
|
r
|
||||||
|
});
|
||||||
|
(bytes, name, width, height, color)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user