From: MegaBrutal Date: Sat, 15 Oct 2022 00:30:30 +0000 (+0200) Subject: Implement /gen/3 X-Git-Url: http://git.megabrutal.com/?p=litoprism.git;a=commitdiff_plain;h=687d5f6c39f8d7546d4a78821ed0a50e9adac3b2 Implement /gen/3 --- diff --git a/src/main.rs b/src/main.rs index 01ce022..8653ec3 100644 --- a/src/main.rs +++ b/src/main.rs @@ -12,8 +12,9 @@ use actix_web::body::BoxBody; use actix_web::http::StatusCode; use image::{ImageBuffer, ColorType, Rgb, RgbImage, write_buffer_with_format}; use image::ImageOutputFormat::Png; -use image::imageops::{FilterType, resize}; +use image::imageops::{FilterType, overlay, resize}; use image::error::{LimitError, LimitErrorKind}; +use actix_web::cookie::time::OffsetDateTime; #[derive(Debug)] @@ -264,6 +265,23 @@ async fn img_gen2(req: HttpRequest, path: web::Path<(u32, u32, u32)>) -> Result< .body(cursor.into_inner())) } +#[get("/gen/3/{scale}")] +async fn img_gen3(req: HttpRequest, path: web::Path) -> Result { + let scale = path.into_inner(); + let data = match req.headers().get("user-agent") { + Some(header) => header.to_str().unwrap_or(""), + _ => "" + }; + let rgbimg: RgbImage = rgb_encode(ImageBuffer::new(6, 6), &mut data.bytes())?; + let mut resimg: RgbImage = ImageBuffer::new(60 * 6, 24 * 6); + let time = OffsetDateTime::now_utc().time(); + overlay(&mut resimg, &rgbimg, (time.minute() * 6).into(), (time.hour() * 6).into()); + let cursor = image_to_cursor(resimg, scale)?; + Ok(HttpResponse::build(StatusCode::OK) + .content_type("image/png") + .body(cursor.into_inner())) +} + #[get("/pgen/0/{data}")] async fn img_pgen0(req: HttpRequest, canvas0: web::Data>>) -> Result { let data = req.uri().path().split("/").skip(3).next().unwrap(); @@ -333,6 +351,7 @@ async fn main() -> std::io::Result<()> { .service(img_gen0) .service(img_gen1) .service(img_gen2) + .service(img_gen3) .service(img_pgen0) .service(img_pgen1) .service(img_pgen2)