From 8b165ec7519efb2054c45d99a6e6107034378527 Mon Sep 17 00:00:00 2001 From: "[dyad]" Date: Sun, 18 Jan 2026 11:47:26 +0100 Subject: [PATCH] [dyad] Added aspect ratio presets - wrote 1 file(s) --- src/components/image-converter.tsx | 59 ++++++++++++++++++++++++++---- 1 file changed, 52 insertions(+), 7 deletions(-) diff --git a/src/components/image-converter.tsx b/src/components/image-converter.tsx index 1eab611..91eeb9b 100644 --- a/src/components/image-converter.tsx +++ b/src/components/image-converter.tsx @@ -31,12 +31,21 @@ import { import { Slider } from "@/components/ui/slider"; import { ObjectPositionControl } from "./object-position-control"; +const aspectRatios = [ + { name: "Custom", value: "custom" }, + { name: "1:1 (Square)", value: "1/1" }, + { name: "4:3 (Standard)", value: "4/3" }, + { name: "3:2 (Photography)", value: "3/2" }, + { name: "16:9 (Widescreen)", value: "16/9" }, +]; + export function ImageConverter() { const [images, setImages] = useState([]); const [previewUrls, setPreviewUrls] = useState([]); const [filenames, setFilenames] = useState([]); const [width, setWidth] = useState(""); const [height, setHeight] = useState(""); + const [aspectRatio, setAspectRatio] = useState("custom"); const [format, setFormat] = useState<"png" | "jpeg" | "webp">("webp"); const [quality, setQuality] = useState(90); @@ -283,6 +292,25 @@ export function ImageConverter() { toast.info("Settings updated and will be used for all downloads."); }; + const handleAspectRatioChange = (value: string) => { + setAspectRatio(value); + if (value !== 'custom' && width) { + const [w, h] = value.split('/').map(Number); + const newHeight = Math.round(Number(width) * (h / w)); + setHeight(newHeight); + } + }; + + const handleWidthChange = (e: React.ChangeEvent) => { + setWidth(e.target.value); + setAspectRatio("custom"); + }; + + const handleHeightChange = (e: React.ChangeEvent) => { + setHeight(e.target.value); + setAspectRatio("custom"); + }; + const hasImages = images.length > 0; return ( @@ -299,14 +327,31 @@ export function ImageConverter() { -
-
- - setWidth(e.target.value)} /> +
+
+ +
-
- - setHeight(e.target.value)} /> +
+
+ + +
+
+ + +