get original filename
This commit is contained in:
parent
9b81d70ae2
commit
411b6adff7
@ -25,10 +25,13 @@ dev:
|
|||||||
just tailwind
|
just tailwind
|
||||||
just decap_server
|
just decap_server
|
||||||
|
|
||||||
# Run dev server in watch mode
|
# Run tests
|
||||||
test:
|
test:
|
||||||
cargo test
|
cargo test
|
||||||
|
|
||||||
|
test_watch:
|
||||||
|
cargo watch -x test
|
||||||
|
|
||||||
# Run server in production mode
|
# Run server in production mode
|
||||||
prod:
|
prod:
|
||||||
cargo run --release
|
cargo run --release
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
use std::path::Path;
|
use std::path::{Path, PathBuf};
|
||||||
|
|
||||||
|
pub const PIXEL_DENSITIES: [f32; 5] = [1., 1.5, 2., 3., 4.];
|
||||||
pub const PIXEL_DENSITIES: [f64; 5] = [1., 1.5, 2., 3., 4.];
|
|
||||||
|
|
||||||
#[derive(Debug, PartialEq)]
|
#[derive(Debug, PartialEq)]
|
||||||
pub enum ExportFormat {
|
pub enum ExportFormat {
|
||||||
@ -12,34 +11,53 @@ pub enum ExportFormat {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn generate_picture_markup(orig_img_path: &str, width: u32, height: u32) -> String {
|
pub fn generate_picture_markup(orig_img_path: &str, width: u32, height: u32) -> String {
|
||||||
let exported_formats = get_export_formats(&orig_img_path);
|
let exported_formats = get_export_formats(orig_img_path);
|
||||||
|
let path_to_generated = get_generated_file_name(orig_img_path);
|
||||||
|
let resolutions = vec![
|
||||||
|
(300, 200, 1.),
|
||||||
|
(450, 300, 1.5),
|
||||||
|
(600, 400, 2.),
|
||||||
|
(900, 600, 3.),
|
||||||
|
(1200, 800, 4.),
|
||||||
|
];
|
||||||
|
|
||||||
for export_format in exported_formats {
|
for export_format in exported_formats {
|
||||||
|
|
||||||
// TODO get original img resolution and determine how many exports are going to be needed
|
// TODO get original img resolution and determine how many exports are going to be needed
|
||||||
// let orig_img_resolution =
|
// let orig_img_resolution =
|
||||||
// let resolutions = get_resolutions(width, height);
|
// let resolutions = get_resolutions(width, height);
|
||||||
|
|
||||||
let resolutions = vec![(300, 200), (450, 300), (600, 400), (900, 600), (1200, 800)];
|
|
||||||
let generated_paths = get_generated_paths(orig_img_path, resolutions);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
let result = format!("<picture></picture>");
|
let result = format!("<picture></picture>");
|
||||||
result
|
result
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_generated_paths(orig_img_path: &str, &resolutions: Vec<(i32, i32)>) -> Vec<String> {
|
fn get_generated_file_name(orig_img_path: &str) -> PathBuf {
|
||||||
|
let path = Path::new(&orig_img_path);
|
||||||
|
let parent = path
|
||||||
|
.parent()
|
||||||
|
.expect("There should be a parent route to an image")
|
||||||
|
.strip_prefix(".")
|
||||||
|
.unwrap();
|
||||||
|
let file_name = path
|
||||||
|
.file_stem()
|
||||||
|
.expect("There should be a name for every img");
|
||||||
|
let result = Path::new("./generated_images/")
|
||||||
|
.join(parent)
|
||||||
|
.join(file_name);
|
||||||
|
result
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_get_generated_paths {
|
fn test_get_generated_paths() {
|
||||||
let orig_img_path = "./images/uploads/img_name.jpg";
|
let orig_img_path = "./images/uploads/img_name.jpg";
|
||||||
let resolutions = vec![(300, 200), (450, 300), (600, 400), (900, 600), (1200, 800)];
|
assert_eq!(
|
||||||
assert_eq!(get_generated_paths(orig_img_path,&resolutions), vec![])
|
get_generated_file_name(orig_img_path)
|
||||||
|
.to_str()
|
||||||
|
.unwrap_or(""),
|
||||||
|
"./generated_images/images/uploads/img_name"
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// TODO get original img resolution and determine how many exports are going to be needed
|
// TODO get original img resolution and determine how many exports are going to be needed
|
||||||
fn get_resolutions(orig_width: i32, orig_height: i32, width: i32, height: i32) -> Vec<(i32, i32)> {
|
fn get_resolutions(orig_width: i32, orig_height: i32, width: i32, height: i32) -> Vec<(i32, i32)> {
|
||||||
todo!("get original img resolution and determine how many exports are going to be needed")
|
todo!("get original img resolution and determine how many exports are going to be needed")
|
||||||
@ -50,18 +68,23 @@ fn generate_srcset(new_path: &str, width: u32, height: u32) -> &str {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn get_export_formats(orig_img_path: &str) -> Vec<ExportFormat> {
|
fn get_export_formats(orig_img_path: &str) -> Vec<ExportFormat> {
|
||||||
let path = Path::new(&orig_img_path).extension().and_then(|ext| ext.to_str());
|
let path = Path::new(&orig_img_path)
|
||||||
|
.extension()
|
||||||
|
.and_then(|ext| ext.to_str());
|
||||||
|
|
||||||
match path {
|
match path {
|
||||||
Some("jpg" | "jpeg") => vec![ExportFormat::AVIF, ExportFormat::JPG]
|
Some("jpg" | "jpeg") => vec![ExportFormat::AVIF, ExportFormat::JPG],
|
||||||
Some("png") => vec![ExportFormat::AVIF, ExportFormat::PNG]
|
Some("png") => vec![ExportFormat::AVIF, ExportFormat::PNG],
|
||||||
Some(_) | None => vec![]
|
Some(_) | None => vec![],
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_get_export_formats {
|
fn test_get_export_formats() {
|
||||||
assert_eq!(get_export_formats("./images/uploads/img_name.jpg"), vec![ExportFormat::AVIF, ExportFormat::JPG])
|
assert_eq!(
|
||||||
|
get_export_formats("./images/uploads/img_name.jpg"),
|
||||||
|
vec![ExportFormat::AVIF, ExportFormat::JPG]
|
||||||
|
)
|
||||||
}
|
}
|
||||||
#[test]
|
#[test]
|
||||||
fn test_generate_srcset() {
|
fn test_generate_srcset() {
|
||||||
|
Loading…
Reference in New Issue
Block a user