From 1707521f3ae32864daacd0ac30f4f3580c07ac03 Mon Sep 17 00:00:00 2001 From: Siddharth Kumar Sah Date: Sat, 11 Apr 2026 17:49:28 +0800 Subject: [PATCH] feat: replace Python seam carving with caire Go binary Replace the Python seam-carving library with caire (esimov/caire v1.5.0), a Go-based content-aware resize engine that is faster and supports both shrinking and enlarging via seam insertion. - Add Go builder stage in Dockerfile to compile caire from source - Rewrite seam-carving.ts to call caire via execFile (no Python sidecar) - Remove content-aware-resize from PYTHON_SIDECAR_TOOLS (60s timeout) - Add new options: blur radius, edge sensitivity, square mode, face detection - Move content-aware toggle below standard resize in UI (subtler placement) - Rename "Don't enlarge" to "Limit to original size" with hover tooltip - Add smooth progress bar for medium-duration tools - Delete seam_carve.py and remove seam-carving pip dependency - Update integration tests and visual regression screenshots --- .../src/routes/tools/content-aware-resize.ts | 103 +++++---- .../src/components/tools/resize-settings.tsx | 216 ++++++++++++------ apps/web/src/hooks/use-tool-processor.ts | 33 ++- docker/Dockerfile | 25 +- docker/download_models.py | 3 +- packages/ai/python/requirements-gpu.txt | 1 - packages/ai/python/requirements.txt | 1 - packages/ai/python/seam_carve.py | 161 ------------- packages/ai/src/seam-carving.ts | 96 ++++++-- packages/shared/src/constants.ts | 1 - .../resize-empty-desktop.png | Bin 55422 -> 54837 bytes .../resize-empty-mobile.png | Bin 38536 -> 39218 bytes .../integration/content-aware-resize.test.ts | 153 +++++++++++-- 13 files changed, 466 insertions(+), 327 deletions(-) delete mode 100644 packages/ai/python/seam_carve.py diff --git a/apps/api/src/routes/tools/content-aware-resize.ts b/apps/api/src/routes/tools/content-aware-resize.ts index 22c8fe70..4fd240ad 100644 --- a/apps/api/src/routes/tools/content-aware-resize.ts +++ b/apps/api/src/routes/tools/content-aware-resize.ts @@ -7,10 +7,20 @@ import { z } from "zod"; import { autoOrient } from "../../lib/auto-orient.js"; import { validateImageBuffer } from "../../lib/file-validation.js"; import { createWorkspace } from "../../lib/workspace.js"; -import { updateSingleFileProgress } from "../progress.js"; import { registerToolProcessFn } from "../tool-factory.js"; -/** Content-aware resize (seam carving) route. */ +const settingsSchema = z.object({ + width: z.number().positive().optional(), + height: z.number().positive().optional(), + protectFaces: z.boolean().default(false), + blurRadius: z.number().min(0).max(20).default(4), + sobelThreshold: z.number().min(1).max(20).default(2), + square: z.boolean().default(false), +}); + +type Settings = z.infer; + +/** Content-aware resize (seam carving via caire) route. */ export function registerContentAwareResize(app: FastifyInstance) { app.post( "/api/v1/tools/content-aware-resize", @@ -18,7 +28,6 @@ export function registerContentAwareResize(app: FastifyInstance) { let fileBuffer: Buffer | null = null; let filename = "image"; let settingsRaw: string | null = null; - let clientJobId: string | null = null; try { const parts = request.parts(); @@ -32,8 +41,6 @@ export function registerContentAwareResize(app: FastifyInstance) { filename = basename(part.filename ?? "image"); } else if (part.fieldname === "settings") { settingsRaw = part.value as string; - } else if (part.fieldname === "clientJobId") { - clientJobId = part.value as string; } } } catch (err) { @@ -52,15 +59,37 @@ export function registerContentAwareResize(app: FastifyInstance) { return reply.status(400).send({ error: `Invalid image: ${validation.reason}` }); } + // Validate settings + let settings: Settings; + try { + const parsed = settingsRaw ? JSON.parse(settingsRaw) : {}; + const result = settingsSchema.safeParse(parsed); + if (!result.success) { + return reply.status(400).send({ + error: "Invalid settings", + details: result.error.issues.map((i) => ({ + path: i.path.join("."), + message: i.message, + })), + }); + } + settings = result.data; + } catch { + return reply.status(400).send({ error: "Settings must be valid JSON" }); + } + + if (!settings.square && !settings.width && !settings.height) { + return reply.status(400).send({ + error: "Either width, height, or square mode must be specified", + }); + } + try { - const settings = settingsRaw ? JSON.parse(settingsRaw) : {}; request.log.info( { toolId: "content-aware-resize", imageSize: fileBuffer.length, - width: settings.width, - height: settings.height, - protectFaces: settings.protectFaces, + ...settings, }, "Starting content-aware resize", ); @@ -75,43 +104,21 @@ export function registerContentAwareResize(app: FastifyInstance) { const inputPath = join(workspacePath, "input", filename); await writeFile(inputPath, fileBuffer); - // Process - const jobIdForProgress = clientJobId; - const onProgress = jobIdForProgress - ? (percent: number, stage: string) => { - updateSingleFileProgress({ - jobId: jobIdForProgress, - phase: "processing", - stage, - percent, - }); - } - : undefined; - - const result = await seamCarve( - fileBuffer, - join(workspacePath, "output"), - { - width: settings.width, - height: settings.height, - protectFaces: settings.protectFaces ?? true, - }, - onProgress, - ); + // Process with caire + const result = await seamCarve(fileBuffer, join(workspacePath, "output"), { + width: settings.width, + height: settings.height, + protectFaces: settings.protectFaces, + blurRadius: settings.blurRadius, + sobelThreshold: settings.sobelThreshold, + square: settings.square, + }); // Save output const outputFilename = `${filename.replace(/\.[^.]+$/, "")}_seam.png`; const outputPath = join(workspacePath, "output", outputFilename); await writeFile(outputPath, result.buffer); - if (clientJobId) { - updateSingleFileProgress({ - jobId: clientJobId, - phase: "complete", - percent: 100, - }); - } - return reply.send({ jobId, downloadUrl: `/api/v1/download/${jobId}/${encodeURIComponent(outputFilename)}`, @@ -130,24 +137,22 @@ export function registerContentAwareResize(app: FastifyInstance) { }, ); - // Register in the pipeline/batch registry so this tool can be used - // as a step in automation pipelines (without progress callbacks). + // Register in the pipeline/batch registry registerToolProcessFn({ toolId: "content-aware-resize", - settingsSchema: z.object({ - width: z.number().positive().optional(), - height: z.number().positive().optional(), - protectFaces: z.boolean().default(true), - }), + settingsSchema, process: async (inputBuffer, settings, filename) => { - const s = settings as { width?: number; height?: number; protectFaces?: boolean }; + const s = settings as Settings; const orientedBuffer = await autoOrient(inputBuffer); const jobId = randomUUID(); const workspacePath = await createWorkspace(jobId); const result = await seamCarve(orientedBuffer, join(workspacePath, "output"), { width: s.width, height: s.height, - protectFaces: s.protectFaces ?? true, + protectFaces: s.protectFaces, + blurRadius: s.blurRadius, + sobelThreshold: s.sobelThreshold, + square: s.square, }); const outputFilename = `${filename.replace(/\.[^.]+$/, "")}_seam.png`; return { buffer: result.buffer, filename: outputFilename, contentType: "image/png" }; diff --git a/apps/web/src/components/tools/resize-settings.tsx b/apps/web/src/components/tools/resize-settings.tsx index 0bc3ac9e..ae105591 100644 --- a/apps/web/src/components/tools/resize-settings.tsx +++ b/apps/web/src/components/tools/resize-settings.tsx @@ -1,5 +1,5 @@ import { SOCIAL_MEDIA_PRESETS } from "@stirling-image/shared"; -import { Download, Link, Unlink } from "lucide-react"; +import { Download, Info, Link, Unlink } from "lucide-react"; import { useCallback, useEffect, useRef, useState } from "react"; import { ProgressCard } from "@/components/common/progress-card"; import { useToolProcessor } from "@/hooks/use-tool-processor"; @@ -17,6 +17,17 @@ const FIT_LABELS: Record = { // Group presets by platform const platforms = [...new Set(SOCIAL_MEDIA_PRESETS.map((p) => p.platform))]; +function HintIcon({ text }: { text: string }) { + return ( + + + + {text} + + + ); +} + export interface ResizeControlsProps { onChange?: (settings: Record) => void; } @@ -31,7 +42,10 @@ export function ResizeControls({ onChange }: ResizeControlsProps) { const [lockAspect, setLockAspect] = useState(true); const [withoutEnlargement, setWithoutEnlargement] = useState(false); const [contentAware, setContentAware] = useState(false); - const [protectFaces, setProtectFaces] = useState(true); + const [protectFaces, setProtectFaces] = useState(false); + const [blurRadius, setBlurRadius] = useState(4); + const [sobelThreshold, setSobelThreshold] = useState(2); + const [squareMode, setSquareMode] = useState(false); const onChangeRef = useRef(onChange); useEffect(() => { @@ -42,9 +56,14 @@ export function ResizeControls({ onChange }: ResizeControlsProps) { const settings: Record = {}; if (contentAware) { settings.contentAware = true; - if (width) settings.width = Number(width); - if (height) settings.height = Number(height); + if (!squareMode) { + if (width) settings.width = Number(width); + if (height) settings.height = Number(height); + } settings.protectFaces = protectFaces; + settings.blurRadius = blurRadius; + settings.sobelThreshold = sobelThreshold; + settings.square = squareMode; } else if (tab === "scale") { settings.percentage = Number(percentage); } else { @@ -54,7 +73,19 @@ export function ResizeControls({ onChange }: ResizeControlsProps) { settings.withoutEnlargement = withoutEnlargement; } onChangeRef.current?.(settings); - }, [tab, width, height, percentage, fit, withoutEnlargement, contentAware, protectFaces]); + }, [ + tab, + width, + height, + percentage, + fit, + withoutEnlargement, + contentAware, + protectFaces, + blurRadius, + sobelThreshold, + squareMode, + ]); const handlePreset = (preset: (typeof SOCIAL_MEDIA_PRESETS)[number]) => { const key = `${preset.platform}-${preset.name}`; @@ -84,7 +115,8 @@ export function ResizeControls({ onChange }: ResizeControlsProps) { value={width} onChange={(e) => setWidth(e.target.value)} placeholder="Auto" - className="w-full mt-0.5 px-2 py-1.5 rounded border border-border bg-background text-sm text-foreground" + disabled={squareMode && contentAware} + className="w-full mt-0.5 px-2 py-1.5 rounded border border-border bg-background text-sm text-foreground disabled:opacity-50" /> - - - {/* Content-aware inputs */} - {contentAware && ( -
- {dimensionInputs} - - {/* Protect faces */} - -
- )} - {/* Standard resize tabs */} {!contentAware && ( <> @@ -196,7 +204,7 @@ export function ResizeControls({ onChange }: ResizeControlsProps) { > {preset.name} - {preset.width} × {preset.height} + {preset.width} x {preset.height} ); @@ -205,16 +213,7 @@ export function ResizeControls({ onChange }: ResizeControlsProps) { ))} - {/* Don't enlarge */} - + {enlargementCheckbox} )} @@ -240,16 +239,7 @@ export function ResizeControls({ onChange }: ResizeControlsProps) { - {/* Don't enlarge */} - + {enlargementCheckbox} )} @@ -289,6 +279,98 @@ export function ResizeControls({ onChange }: ResizeControlsProps) { )} )} + + {/* Content-aware section - positioned below standard resize */} +
+
+
+ Content-aware +
+ +
+ + {/* Content-aware options (expanded when toggled) */} + {contentAware && ( +
+ {/* Dimensions */} + {dimensionInputs} + + {/* Square mode */} + + + {/* Face protection */} + + + {/* Blur radius */} +
+
+ + {blurRadius} +
+ setBlurRadius(Number(e.target.value))} + className="w-full mt-1 h-1.5 rounded-full appearance-none bg-muted accent-primary" + /> +
+ + {/* Sobel threshold */} +
+
+ + {sobelThreshold} +
+ setSobelThreshold(Number(e.target.value))} + className="w-full mt-1 h-1.5 rounded-full appearance-none bg-muted accent-primary" + /> +
+
+ )} +
); } @@ -323,7 +405,7 @@ export function ResizeSettings() { hasFile && !processing && (isContentAware - ? Boolean(settings.width) || Boolean(settings.height) + ? Boolean(settings.width) || Boolean(settings.height) || Boolean(settings.square) : tab === "scale" ? Number(settings.percentage) > 0 : Boolean(settings.width) || Boolean(settings.height)); diff --git a/apps/web/src/hooks/use-tool-processor.ts b/apps/web/src/hooks/use-tool-processor.ts index 11c29a7d..ebf1535d 100644 --- a/apps/web/src/hooks/use-tool-processor.ts +++ b/apps/web/src/hooks/use-tool-processor.ts @@ -29,6 +29,10 @@ const IDLE_PROGRESS: ToolProgress = { // smart-crop is category "ai" but uses Sharp (no Python), so it's excluded. const AI_PYTHON_TOOLS = new Set(PYTHON_SIDECAR_TOOLS); +// Tools that take a few seconds (not instant like Sharp, not minutes like AI). +// Uses a smoother progress: upload 0-40%, then a gradual fill during processing. +const MEDIUM_TOOLS = new Set(["content-aware-resize"]); + export function useToolProcessor(toolId: string) { const { processing, @@ -49,11 +53,14 @@ export function useToolProcessor(toolId: string) { const eventSourceRef = useRef(null); const isAiTool = AI_PYTHON_TOOLS.has(toolId); + const isMediumTool = MEDIUM_TOOLS.has(toolId); + const processingTimerRef = useRef | null>(null); // Clean up on unmount useEffect(() => { return () => { if (elapsedRef.current) clearInterval(elapsedRef.current); + if (processingTimerRef.current) clearInterval(processingTimerRef.current); if (eventSourceRef.current) eventSourceRef.current.close(); if (xhrRef.current) xhrRef.current.abort(); }; @@ -134,12 +141,13 @@ export function useToolProcessor(toolId: string) { const xhr = new XMLHttpRequest(); xhrRef.current = xhr; - // Timeout: 60s for fast tools, 5 min for AI tools + // Timeout: 60s for fast/medium tools, 5 min for AI tools xhr.timeout = isAiTool ? 300_000 : 60_000; - // For AI tools: upload = 0-15%, processing = 15-100% (continuous, no reset) + // For AI tools: upload = 0-15%, processing = 15-100% (SSE-driven) + // For medium tools: upload = 0-40%, processing = 40-95% (gradual fill) // For fast tools: upload = 0-100%, processing = brief 100% hold - const UPLOAD_WEIGHT = isAiTool ? 15 : 100; + const UPLOAD_WEIGHT = isAiTool ? 15 : isMediumTool ? 40 : 100; xhr.upload.onprogress = (event) => { if (event.lengthComputable) { @@ -158,10 +166,25 @@ export function useToolProcessor(toolId: string) { percent: UPLOAD_WEIGHT, stage: isAiTool ? "Starting..." : "Processing...", })); + + // Medium tools: gradually fill from upload weight to 95% over ~15s + if (isMediumTool) { + const start = UPLOAD_WEIGHT; + const target = 95; + const step = (target - start) / 30; // 30 ticks over ~15s + processingTimerRef.current = setInterval(() => { + setProgress((prev) => { + if (prev.phase !== "processing") return prev; + const next = Math.min(target, prev.percent + step); + return { ...prev, percent: next }; + }); + }, 500); + } }; xhr.onload = () => { if (elapsedRef.current) clearInterval(elapsedRef.current); + if (processingTimerRef.current) clearInterval(processingTimerRef.current); if (eventSourceRef.current) { eventSourceRef.current.close(); eventSourceRef.current = null; @@ -201,6 +224,7 @@ export function useToolProcessor(toolId: string) { xhr.onerror = () => { if (elapsedRef.current) clearInterval(elapsedRef.current); + if (processingTimerRef.current) clearInterval(processingTimerRef.current); if (eventSourceRef.current) { eventSourceRef.current.close(); eventSourceRef.current = null; @@ -212,6 +236,7 @@ export function useToolProcessor(toolId: string) { xhr.ontimeout = () => { if (elapsedRef.current) clearInterval(elapsedRef.current); + if (processingTimerRef.current) clearInterval(processingTimerRef.current); if (eventSourceRef.current) { eventSourceRef.current.close(); eventSourceRef.current = null; @@ -227,7 +252,7 @@ export function useToolProcessor(toolId: string) { }); xhr.send(formData); }, - [toolId, isAiTool, setProcessing, setError, setProcessedUrl, setSizes, setJobId], + [toolId, isAiTool, isMediumTool, setProcessing, setError, setProcessedUrl, setSizes, setJobId], ); const processAllFiles = useCallback( diff --git a/docker/Dockerfile b/docker/Dockerfile index be594c25..f857a2a8 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -36,13 +36,27 @@ RUN --mount=type=cache,id=turbo-cache,target=/app/.turbo \ pnpm --filter @stirling-image/web build # ============================================ -# Stage 2: Platform-specific base images +# Stage 2: Build caire (content-aware resize) +# ============================================ +FROM golang:1.23-bookworm AS caire-builder + +RUN apt-get update && apt-get install -y --no-install-recommends \ + libwayland-dev libx11-dev libx11-xcb-dev libxkbcommon-x11-dev \ + libgles2-mesa-dev libegl1-mesa-dev libffi-dev libxcursor-dev \ + libxrandr-dev libxinerama-dev libxi-dev libxxf86vm-dev \ + libvulkan-dev libxfixes-dev pkg-config \ + && rm -rf /var/lib/apt/lists/* + +RUN go install github.com/esimov/caire/cmd/caire@v1.5.0 + +# ============================================ +# Stage 3: Platform-specific base images # ============================================ FROM node:22-bookworm AS base-linux-arm64 FROM nvidia/cuda:12.6.3-runtime-ubuntu24.04 AS base-linux-amd64 # ============================================ -# Stage 3: Production runtime +# Stage 4: Production runtime # ============================================ ARG TARGETOS ARG TARGETARCH @@ -78,8 +92,13 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ tesseract-ocr tesseract-ocr-eng tesseract-ocr-deu tesseract-ocr-fra tesseract-ocr-spa \ build-essential \ libgl1 libglib2.0-0 \ + libegl1 libwayland-egl1 libwayland-client0 libwayland-cursor0 \ + libxkbcommon-x11-0 libxkbcommon0 libxcursor1 \ && rm -rf /var/lib/apt/lists/* +# Caire binary (content-aware seam carving) +COPY --from=caire-builder /go/bin/caire /usr/local/bin/caire + # Python venv - Layer 1: Base packages (rarely change, ~3 GB) RUN python3 -m venv /opt/venv && \ /opt/venv/bin/pip install --upgrade pip && \ @@ -116,8 +135,6 @@ RUN if [ "$TARGETARCH" = "amd64" ]; then \ /opt/venv/bin/pip install mediapipe==0.10.18 \ ; fi -RUN /opt/venv/bin/pip install seam-carving==1.1.0 - # Pre-download and verify all ML models # Note: on amd64, paddlepaddle-gpu can't import without the CUDA driver (only # available at runtime). The download script gracefully skips PaddleOCR model diff --git a/docker/download_models.py b/docker/download_models.py index d635e7f9..19324d88 100644 --- a/docker/download_models.py +++ b/docker/download_models.py @@ -110,9 +110,8 @@ def smoke_test(): from PIL import Image import cv2 import numpy - import seam_carving from rembg import new_session - print(" CPU imports OK (Pillow, cv2, numpy, seam_carving, rembg)") + print(" CPU imports OK (Pillow, cv2, numpy, rembg)") # MediaPipe is CPU-only, should always import import mediapipe as mp diff --git a/packages/ai/python/requirements-gpu.txt b/packages/ai/python/requirements-gpu.txt index 3a9d773e..95fb1199 100644 --- a/packages/ai/python/requirements-gpu.txt +++ b/packages/ai/python/requirements-gpu.txt @@ -7,4 +7,3 @@ onnxruntime-gpu==1.20.1 numpy==1.26.4 Pillow==11.1.0 opencv-python-headless==4.10.0.84 -seam-carving==1.1.0 diff --git a/packages/ai/python/requirements.txt b/packages/ai/python/requirements.txt index 88395384..1487732f 100644 --- a/packages/ai/python/requirements.txt +++ b/packages/ai/python/requirements.txt @@ -7,4 +7,3 @@ onnxruntime==1.20.1 numpy==1.26.4 Pillow==11.1.0 opencv-python-headless==4.10.0.84 -seam-carving==1.1.0 diff --git a/packages/ai/python/seam_carve.py b/packages/ai/python/seam_carve.py deleted file mode 100644 index 51a8dc2a..00000000 --- a/packages/ai/python/seam_carve.py +++ /dev/null @@ -1,161 +0,0 @@ -""" -Content-aware image resize using seam carving. -Uses the seam-carving library (li-plus) with optional face protection via MediaPipe. - -Args: - sys.argv[1]: input image path - sys.argv[2]: output image path - sys.argv[3]: JSON settings string with keys: - - width (int, optional): target width - - height (int, optional): target height - - protectFaces (bool, optional): enable face detection for protection mask -""" - -import json -import sys - - -def emit_progress(percent, stage): - """Emit structured progress to stderr for bridge.ts to capture.""" - print(json.dumps({"progress": percent, "stage": stage}), file=sys.stderr, flush=True) - - -def build_face_mask(img_array): - """Detect faces with MediaPipe and return a boolean keep_mask.""" - import numpy as np - - try: - import mediapipe as mp - except ImportError: - emit_progress(20, "MediaPipe not available, skipping face protection") - return None - - h, w = img_array.shape[:2] - mask = np.zeros((h, w), dtype=bool) - - face_detection = mp.solutions.face_detection - detector = face_detection.FaceDetection(model_selection=1, min_detection_confidence=0.5) - - try: - results = detector.process(img_array) - if not results.detections: - emit_progress(20, "No faces detected") - return None - - for detection in results.detections: - bbox = detection.location_data.relative_bounding_box - x = int(bbox.xmin * w) - y = int(bbox.ymin * h) - bw = int(bbox.width * w) - bh = int(bbox.height * h) - - # Add 20% padding around face - pad_x = int(bw * 0.2) - pad_y = int(bh * 0.2) - x1 = max(0, x - pad_x) - y1 = max(0, y - pad_y) - x2 = min(w, x + bw + pad_x) - y2 = min(h, y + bh + pad_y) - - mask[y1:y2, x1:x2] = True - - emit_progress(20, f"Detected {len(results.detections)} face(s)") - return mask - finally: - detector.close() - - -def main(): - if len(sys.argv) < 4: - print(json.dumps({"success": False, "error": "Usage: seam_carve.py "})) - sys.exit(1) - - input_path = sys.argv[1] - output_path = sys.argv[2] - - try: - settings = json.loads(sys.argv[3]) - except (json.JSONDecodeError, ValueError): - print(json.dumps({"success": False, "error": "Invalid settings JSON"})) - sys.exit(1) - - target_width = settings.get("width") - target_height = settings.get("height") - protect_faces = settings.get("protectFaces", False) - - try: - import numpy as np - from PIL import Image - except ImportError: - print(json.dumps({"success": False, "error": "Pillow/numpy not installed"})) - sys.exit(1) - - try: - import seam_carving - except ImportError: - print(json.dumps({"success": False, "error": "seam-carving package not installed"})) - sys.exit(1) - - try: - emit_progress(0, "Loading image") - img = Image.open(input_path).convert("RGB") - img_array = np.array(img) - src_h, src_w = img_array.shape[:2] - - # Default to source dimensions if not specified - if target_width is None: - target_width = src_w - if target_height is None: - target_height = src_h - - # Validate: shrink only - if target_width > src_w or target_height > src_h: - print(json.dumps({ - "success": False, - "error": f"Content-aware resize only supports shrinking. Source is {src_w}x{src_h}, target is {target_width}x{target_height}." - })) - sys.exit(1) - - # Nothing to do - if target_width == src_w and target_height == src_h: - img.save(output_path) - print(json.dumps({"success": True, "width": src_w, "height": src_h})) - return - - # Warn about large images - if src_w > 3000 or src_h > 3000: - emit_progress(5, "Large image detected, this may take a while") - - # Face protection mask - keep_mask = None - if protect_faces: - emit_progress(10, "Detecting faces") - keep_mask = build_face_mask(img_array) - - emit_progress(25, "Starting seam carving") - - # seam_carving.resize takes size as (width, height) - result = seam_carving.resize( - img_array, - (target_width, target_height), - energy_mode="backward", - order="width-first", - keep_mask=keep_mask, - ) - - emit_progress(90, "Saving result") - Image.fromarray(result).save(output_path) - - print(json.dumps({ - "success": True, - "width": result.shape[1], - "height": result.shape[0], - })) - - except Exception as e: - print(json.dumps({"success": False, "error": str(e)})) - sys.exit(1) - - -if __name__ == "__main__": - main() diff --git a/packages/ai/src/seam-carving.ts b/packages/ai/src/seam-carving.ts index 5dd72e9a..69ad6dd8 100644 --- a/packages/ai/src/seam-carving.ts +++ b/packages/ai/src/seam-carving.ts @@ -1,11 +1,19 @@ -import { readFile, writeFile } from "node:fs/promises"; +import { execFile } from "node:child_process"; +import { randomUUID } from "node:crypto"; +import { readFile, rm, writeFile } from "node:fs/promises"; import { join } from "node:path"; -import { type ProgressCallback, runPythonWithProgress } from "./bridge.js"; +import { promisify } from "node:util"; +import sharp from "sharp"; + +const execFileAsync = promisify(execFile); export interface SeamCarveOptions { width?: number; height?: number; protectFaces?: boolean; + blurRadius?: number; + sobelThreshold?: number; + square?: boolean; } export interface SeamCarveResult { @@ -14,31 +22,77 @@ export interface SeamCarveResult { height: number; } +/** + * Discover the caire binary. Checks PATH (Docker installs to /usr/local/bin) + * and the CAIRE_PATH env var for local development. + */ +let cachedCairePath: string | null = null; + +async function findCaire(): Promise { + if (cachedCairePath) return cachedCairePath; + + const candidates = process.env.CAIRE_PATH ? [process.env.CAIRE_PATH, "caire"] : ["caire"]; + + for (const cmd of candidates) { + try { + await execFileAsync(cmd, ["-help"], { timeout: 5_000 }); + cachedCairePath = cmd; + return cmd; + } catch { + // try next + } + } + throw new Error( + "caire binary not found. Install via: go install github.com/esimov/caire/cmd/caire@v1.5.0", + ); +} + +/** + * Content-aware resize using caire (Go seam carving engine). + * Supports both shrinking and enlarging via seam removal/insertion. + */ export async function seamCarve( inputBuffer: Buffer, outputDir: string, options: SeamCarveOptions = {}, - onProgress?: ProgressCallback, ): Promise { - const inputPath = join(outputDir, "input_seam_carve.png"); - const outputPath = join(outputDir, "output_seam_carve.png"); + const cairePath = await findCaire(); + const id = randomUUID(); + const inputPath = join(outputDir, `caire-in-${id}.png`); + const outputPath = join(outputDir, `caire-out-${id}.png`); - await writeFile(inputPath, inputBuffer); - const { stdout } = await runPythonWithProgress( - "seam_carve.py", - [inputPath, outputPath, JSON.stringify(options)], - { onProgress }, - ); + try { + await writeFile(inputPath, inputBuffer); - const result = JSON.parse(stdout); - if (!result.success) { - throw new Error(result.error || "Content-aware resize failed"); + // Build caire arguments + const args = ["-in", inputPath, "-out", outputPath, "-preview=false"]; + + if (options.square) { + // Caire -square requires -width and -height set to the shortest edge + const meta = await sharp(inputBuffer).metadata(); + const shortest = Math.min(meta.width ?? 0, meta.height ?? 0); + args.push("-square", "-width", String(shortest), "-height", String(shortest)); + } else { + if (options.width) args.push("-width", String(options.width)); + if (options.height) args.push("-height", String(options.height)); + } + + if (options.protectFaces) args.push("-face"); + if (options.blurRadius !== undefined) args.push("-blur", String(options.blurRadius)); + if (options.sobelThreshold !== undefined) args.push("-sobel", String(options.sobelThreshold)); + + await execFileAsync(cairePath, args, { timeout: 60_000 }); + + const buffer = await readFile(outputPath); + const meta = await sharp(buffer).metadata(); + + return { + buffer, + width: meta.width ?? 0, + height: meta.height ?? 0, + }; + } finally { + await rm(inputPath, { force: true }).catch(() => {}); + await rm(outputPath, { force: true }).catch(() => {}); } - - const buffer = await readFile(outputPath); - return { - buffer, - width: result.width, - height: result.height, - }; } diff --git a/packages/shared/src/constants.ts b/packages/shared/src/constants.ts index ccf77f82..d4dcb211 100644 --- a/packages/shared/src/constants.ts +++ b/packages/shared/src/constants.ts @@ -390,5 +390,4 @@ export const PYTHON_SIDECAR_TOOLS = [ "blur-faces", "erase-object", "ocr", - "content-aware-resize", ] as const; diff --git a/tests/e2e/__screenshots__/visual-regression.spec.ts/resize-empty-desktop.png b/tests/e2e/__screenshots__/visual-regression.spec.ts/resize-empty-desktop.png index ef9a249df16f28724189a8f4662dcf95d8df53c8..4fe494582a067993ccb05a38c799e7045b7ab683 100644 GIT binary patch literal 54837 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

<$$z@1vE*;7N7mHoaB-8>3pGaw*Bw3yiYq>F z4asRg*0YNfvh^VQ$@&kKDICHDJmMX8|=eGRz>!sj;q4@@@)8N?PM7zA!G&_x{mPg391OIUi#$l^f62V9iu2+ z_h~|^q}a%JipsN$$}ZA*!urmP2qu9gl+lA%vXp1`)|M=6R+Ya5@>DCR2PjgX#Sw+;Us2=SF4%im2-HcNiZq4fS+xUZQ^LB zP(RJ!@=v!5Yj#h9Iqp(OmJ$Dc3~Pjs27c)P0}C}G;35_$%zxLeCcf|i7GwXt;r!Q) zhLeHk3H9&i`INb}T>xCI@b7yRTmcssGx5czsLrM6s_CcuT=c8Zbm!MZW_*@GS%o=X zkxJR<2(xiI(xg7<^8lKgh>EsblFIxv=vg^BMSYuVJezNlzdQC`M zf{xCy=(`g$+g-@Tqib-RNPdy@{7i~Uz~^`dNFf+hUv+D5$Afn~*|(_|TlY1cw7F*A zIqoMYWy{paikAoKl>UBhwskubCXJU)Eha^eL?IH+i2FW(wh$AoE?EHHv=?xv25t6S5cZX{Qy=m5Y`6?a)cPbqjcSJGA^OXt8z#d$_D?96+Fx(`}dT7u`e#s-) zsOQ^Znn(6o6~K92gzT`<29a}2qw3rfM}G(x4}6j+pbabwSZ2bCEFkY|_TfI^v2iMs zO_;5-&*Ful<@Jz&jm;?sm67)a4x$`?aYdvoHV=jQ1210&XpLjxkb|T*qtJ~YwnK+R z{9ae;-GB9O{?4uf5QFKN-&|e<+BFx`@9GWXHy3gh`lIXK4$`jS%OL%0zAS{jcC?c0 z=5V&b+@Ip%oxpZk&Q_5>9IokR20*r}(@g}$vkv>MzvOW8Z*qHhwN9k66t=6h0D|Sh zw}*vR*1ksvkTk-<#?@t6A z5dKid5}{$80DP|F*XgRs7$ir=#qng(^BM35M_k?t%J1LfXF1vC29{U_>0?=Clq}+y z`+jrdJ$GyJV0poF`u2vU*7iLPW-IN)umBLDyT*R0B58so@`efk3J)Ql^8<@7(?QnC z$Ayneuw9Zlu&DnxHka8uGfA6^iw9Du04bynVtG} zEq?}(dfty(aR!j@0fP7K8KoRK0cTd+8DT4B=H~GSErm37?G7Tu<3_?ci~2e$QLuQjD3ls%pls8Xif*l_gODuf%B3#@<3^<`P$qnm_cnK(m&%%OQR3ZQlfg8q}OB)x!-WRXG@ zb%6TB#YsN3u=4)5YHm)G*<|4yLp>J@eT_h={f)oLm)eb!!Z_K17!(wsR@ZIp6eI)0 zel-q9@{r5*7ihj?fg*JP$~|5_yjuHyrLzabhwg3(aIWOAx6eLHdqvi6&279Hj8rH2 zU@P1JSO7=|UV^6j^9Dqv;Sp=}ttNie*vb5EaI(^qevYHIpYZ(*?vm3AI#%`KAvQ5- zP?~7F7ZRT4`9fiL0jdFE&kkv)o{u?bM3kvcUi3J)0Q%9R$ZQuV_xg;}d91ntl-JAx+8x=X2~R6KsFj$P2B6e}`g6wbNkw0RrT_)V5J+F~-HG6D03O{rSz0`q z*OA||wZ&l!*eoLxPBW09k#v-;)j=sxe#zDqQkeq-vSkR&}IF^c3WNQEq9Xj+>L3 z1LEXl%#ug+Eyb21TBNnsB@vdpM)64J-Ss8h)qP0Bz|D#ABo$WVIE=NXElV;me1Z@dlfk zABs5&K|6$ku8w>Cd8?oX?Z8OWFf1qt>_s+*up>JsSEGr9@l0==#xTOZDW^CCXZq;H z9BoxO20FU(_~9CNiH1mauZWqSveHP}{9g}zTBV$prnP#^$gAKp2F#og=r7<=Zv2l| zdUlopzY1Rir3xoeT)8->otxnAKN0$Wqpfq6(C_@LX#W&lEHe>V@ChYjxZU&lhLR(7 z7gM%*OO#3&(KB?=>UEs8xdY?7^<$DO{SN|ygF&m$8#M&Ht`N5bpIcmYP>Fav2ixI0 zJ~;rQP2P~jrO{|Fv^x789t2)%sLh3XyvU6M8mVog8tGN%2aW*o;&nmb4G>m`>s%<} z11XowLBB^NRuzIfx|l9G*V)J(R4`)kJ4L%(PS8@wpi7`a+e6o>Z{;GMd7kK6elKFA z+?!@?uq7lM#GYo**{49Cl&asC`w@(6X-JC(o#C@LKa@`IY+TfbE zyoDp>u18F7BYxB7H|d@Boq;O{*M^uy2{Lb~+b8duogT9FPbdD{R zeVKds@icT*FEixk9EE>3c2|d})u%O{GZCjh3ZHLsqz>42YF!scn`)D;ngsTARz)#d zC`_?#hLme4q?55mm317=ksf?qP3q}yzQv2j@rzLrkCZmHfz(cH#ptWKoD@T%B z9H%Stbnt5R%^GB>k|L_O)?l_EoA3LL(Zv=&@MRH^a<%9l6*?GJVL#{|s0Tr+tCv@K z5~zK+@zuF=Yhbdm9;>hZ{b4vFFzi&(YU}h9A;KNJ%lg>1Bz@G@Ra{!JH0BmhrG~K$ z%EXf#;G;7wjTT_>G~NEUq=Di%2Z|uu5BO70$43;Z*2p)xXw@Wpj0s^oY?qu0B{PsX zQIbj8a@_B#7yGL1y>td89B+xtwj@OeLDsIANmgH|(_Y|^DT?!D8PO3BVKy+&7MN+O z#7Un#mW#&*2D_?0DZ1mF=LUVA#0W#rCwD!)s@8uDOykLH5+^~?ixq~Dj zY%_z!El|6Bh>}&D-|ySr9q^Vs*hgGU6Rub(dcGd*#t*;}X=ws@$1aiEkXvw`{CExITjr)jDYPtpsD z8EP%Oa`OFzZJt^+JMFRhAZv z4gWlhEV|-1+AnqPkGDiBfNAq-PXq~$&yRVXF`o2c)70Su9H(wrD*8xuRP$9 z@pCItCEXriC4G0=6{HTADGQCw=BUn&5OhC#F8V>Y3plgXdS2aVtrD$LrE<016KZ$Z zjr9QDk=#f|A5JvP5F%xBKVJ9+1VYZtuumK&C8>M*Oj!TEf$>RFvE;xB2zY+~?42tm z=;d;IcNK&~$nzCR>Hu8n{8dw0#R>0B7%8I{$0dRFg-#2i8XN~G$`q%5Ud^O6*5Xw#&GyX zC5=c?@riRTU#O)xj4@_Y=b|c3iqG}6wa-XW`1u#0AdS{G?9&F0t;4O!s&h>be-JwE ze*iZCljH`czO#oh`v-}sf#NKw%#SFfq7#2$Ce;#Xfb($modp-u05zx2k>=MSxaqG? zb2r{SlUJ9QbWF5H%d8xCO+;vy1M3g{rrynov$gwtA))g&o!(uXF58F5C&y3|<*U}4 zQ6JM=nEq~f&AMVsR+`aYno}YOB0IhU*!J)RiS&4@E$nsV=$<^$?n(!@iLf zw=;I?yX~8C^Ut~2v>N;m;%>vnkud^OS7|HFrgPqPL^+7&;1iEw~&5{UmqtgXD z`=>&-t0Z~K^`^Hm!xtN=*?Jdcr9XZ*?tc|^JRA=f>k!Pib~V=30EZa`>N3BXdfgF* zjJ;1nhnHB4$OtWGZ~h=4SoPIPR}69+`qkOdQKrUH^F3Ri|DA)o3GjDePXZqzOPGy% zim{JcsoUwlcE9=*resL*tQ^?+ITI0L!b8g_Dh$1Z4jzsFp|36gKo1q`Ik+beFE3Az z);<$HryDhwg-O1wyZ$ovPNCmdWA=Z@(&6NLfq9}w3%{6gb5q;hAy$je`en0ocuWjR z@IcXlNjk4lX>}9-Y(?Q0(*oYhyDOFwmnb-XN4hGFDZ9)wfCTfi^RGD3#T9~u}KSX<-d;9xl$hhD|dl=MUGoh#7M2&qB;H=@6*ZuRU6np3?-FAMfqtyV&< z14nvESAt54%_ZHA{3PLh=10mb0p?`WD38S%Z9Pev0x)+;M!)N;L{+%Fz3kQdx~T$b zr$uZ(_4?w;d4;v(7NAn3K1`{wo|u{Kb7wqSF+xtjgjf%>Akw+jJr;9^w}4b~2=#pb zY;QH{%MOpziJEvQi(HbUL);KGMH>%449sJ>n$`2@2(4waAW*=AKRV_ago{V*QPc7^ zSgTPK!h+Ktf)axYKSoQg)JeJcb)nA2Y!1G*@+|G$rdHkxE*&`ao~kd*i!b7E=kV&4 z%)$fs_-c+yQA$SsVTK~m;W!=j0)jd%s@`tVP3}wAss+zMs{Ajk(#PTfQB>o?+{q2v zm1?rpq>YzeKXt5c#ZcWlzzjGH$%hBq6yYs)hK)7v9oVaog8cg{Ry-ZHC&{A}da4;J znHQsSeqZem(#b>#ig3nRpaH%#*>)Sc)`ZqPbZjbtZV`_ zteiSjNkPz0oKO8(;u)cPDWp{>#vOwBy}0@FTZcbr%GFr80su+!vQQ)8lXcwzGxuEz zAQG)z zL-wRgmxB8}z;f76au;2EWoULjS?L;>|A?=YmoMSJ=S%-gmS$}1eYSsZ{c<^ghJgYb zJIw34M^ANfFX(L9+}X(x3Z5vTF-9&*&hCO24gNY64E{6yngffW*%IUZt5W;>jb*lf zSswoPr9TmU_&dP*{m=dO{*I^^fqB$l0r$}XFtt)rG=dh2iq38RFZ0BqxtRl($KI{0 znXA#g^raFNttpqencEK7tL7Fa-Zot$$N~+9Ugn8$g^61@_}L{} z(*nt%WUxZ-@1zU>dP@qw06>9F5JF{D{?B6T@%4q-vF+tz1_mZZZf5HSz9QMmxUuwl z6B*u{Dsu^v4Yff-mc&H$^y?k$po2Ha^S?cJWa6%f z7TXAR3(Lw*SjnyyRQa2i%X4&g{w_l~j{GhjaN#nP z$D{s;(B3g@PI7{d_oRdB@n@jn7c``Sy?Zm4alCX9cn|xdPKY*o1Ndv39Hqhxq6LI8 zt5pLQqIpXT`o_hxfj=*2A3rNpNA|ibnoUEr~jV0U41dR+3e` ze0`~_^rcAo6gA&2hMWvKMl$^yNI7_=YGUL35%EnD4z4n{;;N~SGUW$aKGo0G?qEneBRe}?f(ORTw z6}oO>%U7t1zG0?P*MJBsZ$$r3=4#T`gdc)6ip=M<3kq~|>RM*tb4Qvr1=E^lWm$`M_~Ih9ybJ4? zGDtPfhEHI)^c{?L;BvN#Ax-lYWmM@1gq?hthM>?l^IF!XxzY}myOX@2Pk~K!xq(eJ zRZxj)xCw}c3iuOg(2yol2BdrxF_e0aP91tU6xwH+%68(0ItAsf9C_Uv=S)bK_0~n3 zFt1z-Pf1mnD!A6ogX;_&XoPA4*d^MilLbz0=QBN4Qjwq<6y)Hq@`s=%Y7Tn(rnnZA zszvw)6fJFi=(XBWL>*dE-h>2RXJbc83D7A^!XaKXuGXJUA!IteSypYV_|I{f_Q|Pu z%GV~dX|J0B?6{9s(YbeKELxN&i2V%5bs+op#6C5(1=V(#K$7Yx+G;LIXg0RXB)zNA z=n;=!e;hA@bj2KO;Xi0Tv)P0Qn0%J-p=Lw)84-OD5p_eJQ2dSNQ3q8K0d{P@K1$bn zbhP}2@v69WbkwR?%V0o5!+6|O+af};yquoZyuw7C8%Z7&QFQ>4+&P`oC?T@5Ff!D?viUyW){MVchZ zp+^QIw5%>^K~xXY)o*TZ7K0CgsT*TkvcRfd>amX=GbC9Yz9ajs61hN>SP!`FgulEB z)aSCbCGPR(moZe`B=~cc3Ms0=EiCIt>atq-0nNwsOy>82CaY@G4=e;b zI%AN)BinferyGix0{v8=XuF`@;-lFpR%GHLG3Wl3}e(_VZBXV(KG|ka7K&u+-K4z zT~|lY2BH>4jk>gI+cwl|Zp~e@sfGqMJ@XX|Izlu?WJ+JgV@)(xxkePqP5`$li*^e9 z457T>`aE8<;-D;MCN@a9p6}R>BxZRkf~5)tvOHzBud&zh=*(hwf>7oMB?TP2PF4Q8 z9%)@0OO0)4RNN>B3=)C{wv_kuT>1R6teLBsI_FBLEp8Skp4=GSOL_rfh!|B%9z>68 ze3XbnGGCm}ieLn~I~`y2H# zYg?xZ_9$>6%C9!-N?2;mu?W|1?{7J@fKxUDirWf?m>E^0qbDvc$$qIugSI>k6w}s)@aC;^*E0En|sDY{A2#+ zTol9iCj%dyWnE7P>p97)U;H2udguaG=2tgM@L}>mV|0v|?7x|8TqG$>vxVQMTinO<8a0xs16P)kC8218^$f-o9Bg* zkhu}=(p&1Fg8d9@b`wC!&Y;Ej%_?Ifhv}Mi^S+-cg_0yjQy$O?=B1Ch*ENEk!?DiW-%fEim($&9FH$UJsig zORD@xq$^I^Fa#rPKNXwqICUsqFic15>Dd}IMoAisao5)KOpo=Y^WGZarVJ=~3XPTi znm-AcJf~BC`Hhm_t1($_!WL;wD8RXnmSO&iQx;psWICp~{ca*ont^x+7{W}_Gl(in zQecq5*eq?2ZEky*jY6lXX^-eSHnTZjfi;4~=`VkZ0Y?#|*Y3R4#6Z8xSSaHOLR#u+ z5gV*ADO!rtVwD9BA#YJdyvn)05L19GB5m0(9Hn9$##mM61GA|HoTQY`L9@84S&I)Y z-&$&W$!PZXEY|ELSWL&}2JQxH>DPJS)~06Xku5S8slzzSV}}!ZPtQ^eGq*X3j46Kl%CQz0d;rZ% z!>wiw1yk^u)Jzxill>RfijrTPx`#)DyyV`{XNqv6EWbAKAp(8++Jh>)Q2m&pBnxcY z?exkczW03o0kTGd2~?&@43l6>yZNC9&(}e8)j!E&!VxiG{FF0>B5K!>SDYQ*Z+yP| zp#&Q%Ma!)tZyouPYS2zZ>|L}-P4Oj!=F$Mn>F$#rnQ4W7m7kxYRZr3p+7Yx=S+)Ug z9&vvZSPSJdNE%1xINUbE_9I9BfqjBV&RK(EE_|2F$#lAQ6EJfq8c-JN&l6bF+hMb8 z(ALuijda8gM46n9u-c&T6&5Kx_>8K_mkn$$Cs`Hb(Br$6snium&&z*gLiUz`!!0+v zyT|cgGiKK*?*GW`44SrSxC@Z2l#!makyRWUYS6)!jYiL!P#CfN)9jYf18R(#*s4yF zMHWIb;_kKq_EN@Gd+?skZS^YQM)FgpAy06rw=T^Tav^fk{thW~G9ARMsL>%EB(xypdcpZIs1_1E@o zS%^0nllN9JWR>i1H~4=ed;Y6|`=_%L_wxVS-+{UE{-OjIkrQem_zx>rbOpayfv7XC!O<#i@ysCah;HV{!GAekNed=>n!k=agI_3tun@q^)5vN;Pq_7XYFIypIZ!u zE>ItZ908bbf~C*Mo5`!RH^LL8;W%J(g|PMI@^n`eKR{!7VA0_9;alk0)XSq{C!{xU zf0Ks8C&edu&humK4jXHwBdN|3q0~jqH71(C%tNIT?!HtoJFX`IUG*xT&n4+gMtMEH z((x=}8W$>s+o91*ym&fsvJ?%I^UHIMT+>O|YgzbKLYbtbVdkpp%`PZQvtKBux85A3 z|5yUjd?JC(k^iCu8D?)NtCciM{5@aeuDzUzuMR!`*6p_Njk#PZq?nIFf-))#0|N0@&ptV4-o-sD!MM1To(}b?Ui!y| z0h<}N%k6A~Oa8c+l%6*2nik77FBO~Tfy+^3#ZqB4)`o&pZawXz+<%noI+fS>lml#- zU&}i^{7lDiecZwwZxh&HX|Lx&Yk5#&X)}wA(hdMBr{>q~-4n;r$LK(T>)gu?ko-|CzJTONN# z=S|$V5mJDiDeO9*2TmXA8?*^x3eOi|TPuI`^_K~)?~@R{b!n2ir&(f@{LBZ;X83*W zj+)?$$&+!H*q5TD@aUXXZPfthPLPJ0w{^c75&p- z29p}d|p)Lqz8`Yr)g2D@a6E|(2%JxFu8ugQfsRH{oi#KAP?`!v3 z-mb>dLwT(G4c5!JPe zKT$rIp?WQD>IJFPZcMznT%16zrq!;A*B%a1zs{JZ;7wq+-zB0*O&_Gjav$lxYRpor zErON&M&H&@jw6TEed_c|)DVkrumCvmyaG(5WELA3=-Z(XdaZcMNLOL_+n{8Pc&e4X zNS3^6XKX_IV^{`x9V^IpKNgRg*Gs*{Y@D8ciGHUFE3~rITv9xoM5MZMj&cW2!OU2s zHg!s0EgX@{_`Vig5w_v?&}pX_u;bk*J&S-`XR>%R#eM9a)#c=-s~Hz+XhCtCri*`S z_j~=kL?js`-QO-G zw<@T4uuCDrs`M)EBQU^H-DR=s*hu%yF{98rPWg)=mUp$}OTDKmN=2Rt?PI3OFPxsE z%a3l?ehxjMO*KbaDrT$L)#o4R9!|L2T)$$25yv?26^|zrx2En#1qjkmepjfha){ha zTd*?Otim2Sr~P8x>q0#s`O+m!6YTFcga%HCY;Zh${ARQzd{=iEd6q&-2s5c*Q0BW{ zLWrm3oFl-ENfk@eA?-aBYn4i8z+}i=pjIZBWX>`*kFgiLR#da5c!wd>Al`P=eAZHS zD@-3LH?R=&+w~ILas56}&?f%XC3bvWAr~BO?o+1kEzSSKdSZ!~kUo2*OMP;woHYrh zgEqJZ1_qh}1`+aCKN|Jk;rAYM{i50Pj3)S-$T1~*vT2YYkArbrCOO0i*}+|$uFyck4dzb8l)w_aRaY2g*QzR zbx7CVBj6N{mK|UwTPA~Em=ai(j2t^R7x2RsGI(c{$%^slB1zp&xZ#%r3;1ECi|=HH zUk&Yqi6`N6f@nE59JI!dOnIyCHB|ELxy+>ZOQM*wU@GN$O<=28BBKj^x{k?ryF2sW z3lJE$hS6hrV)|u81fD}Zqp%WC(#sEon%8!lMu4^36~tbY{l%GE46?Yf*$LJWO7FKj zI#4}^3;RK)sjRG@urE&MH7M;1F4lB28X;$E=0%Nd!=R41FzdtOE#mxxN?9}1UhE#} z1hJh^#%cbZiHJ*9t($WSZI6PTZ!Fpo7v>DPfW=5iyL!Nk{1Z}Om;$#R=IH)+OBlAz zhCtPVjQ^PhWNu2UOze^}1+qomd~uf?#yTT)=j%_ZEd4e2tohQrga#+@dIWCZ&|KQzR? z6=lt9xCpKI>7`mjNuk`M+wgyJ03ATCLHQCIz8CyZbzDTO>KTq+_06r!T%P+fWR~x% zuMc0%P};IwJ#ZTS@#S!M$31{c@`3$PHv`_0ZQ@~&j`5lEAxe{wc;YN(KFavzdW_@1 z>636gFMAXrH*{dW7=yQy5_m2<-zNnL^)0W{HIAZb?qNlU@DbeE66l#|2L}YV91}i7 z7EjQPDr4hNVSv@Ikl?V%B%i>ZYX(o&L57A>Ju6tMxdjcxxRiU3?j)=^<6lhTAoHfL z;FJ_F{%U@9vD|_XDfUizY1Fr$d$zV|J#Tt#qRgn=u+6aM34Fz|Hwncg-Uw#i>UBbY za5khkyjY6q#mWpfuB9;R8@{UcVK>QuEnjlVW=ChkJ)F5#g2(4V&8+mC-x=*W6*)ff z_Kk2bGQIxt&u69L{b~`_oS&{BoZZXk(}aYf1*2hm5q4A|>`980V%o)&zjqGASyD73 zZ(V_Qosp~Z2@wk$W|!lfQizv7qZLnUrok!iOIAnBeRUn{w?Kf`f^l(h3zmP^7q^+P z*TIgTSDKiWG_^3xWpX`i(rP~Fik$~Z&IOJW4P5Rt48vJUE#BPi|Av=O%kA0meUqVD zn0-6~KM`l}qfv(=&@F&4T33!0x_V^Pj$dM`PzFPo`i?4po}Db&&c3_$FUepmDWptl zF`vc&7j`ike$M_RJl{OE9%FQUkPYbw} z>no?z)T-Y2&!=Wz-TCpJ_&eK_8Q5Z;lzrA|97{_`W|R($#;AwG?w~yr(at7l*j}6E zVCjp4DF=a3h%MK(n4~_gN#sI*ZhZ>DjNWjsl3nhZZT^5r3FqJ2OE47g(t82BqF0!w znZ2nf01MvIPW1m|ZT*WH0$L*rb08^`)rRLH#ge)%@&i=QGy@1=h|~e< zdbJ$ihQEPN6phhuLQN77Mun4T!=>N<^W*~U+W!Ttf#zrMdT@PS9!=c3+nkO(seW2F z2uc)~K>8+hDdG9 zY(&alVz~dBFpjKTsbat6Q_-$6QV-)s%$Jp&6&nmNI??rTwNl$sGX{nUJ%vDX{$& zcPw3ntz?p7cy|VX(-g+nb^ks9H9P`pis6Nch9ZLnBjI|)*fO0IlsYPuSzIKoCFtgJ z;b*rIAPDAYoj<}7#O8!B?a*;?@H|Zd>izA#M^x-nXE@p1qAJBf!Kz@|7b6C^NN0|s zRVD&W(Zaw8E8vTbXkiF@bND!4{ns@)O*IX$^)u?v%?5H##_1XUx(16IZ~o-uH<_aD zF+3w6@&+up^t0`B8!yRC6bA=N%=SFJnw4<*S&B8V$5c;vT|5Uu1T}%=rro@rZ-A31 z;33o`JFvB~AJa5mynz3z)pl*VN?8ELS)=sssc>XVgF2K_)YGiBMjPf&GB*^?HhJ#L>q) zz#aPeMZovL+15isaMMpc;|}?B-Q+p!72xxS13y-R?nmy&*nVE^%M*dib)>w}#e?Ij zzz0CsjynE5$`O8aTYH{O@`etxK^H&AFt!0&`TA>TL}aC!db#olx=A{po3ebh_OEpS z$4;(Z!6Z0%f9MbTc6&V99)K~1q&|9-KjXwuI=>v-rIQZGPi2K{M5eZDv9TG~Ow+Da zjQKjjaj9p?81G4-CKV$@gqd}dVqx)H`ca!)r@(-(?(H#n_hzX-dIgnR1ts}oN}>ix zk5(Oy4-bPOF;NZhcTCAlcOJW8U26-nUvc&xJ1bCNAdr?{{X_A*H9LqpGD`criF&ut zk9@tP^p-#Ez)DjqtYKqx@(vh$_HA~Z*2dEEbi?}2vN?OVYw{QQRx`OzW&}Z-HQ;fd zDX2<0W&17+EB9+n>dFF1Rk-D({+)>Dnf}3|KCMFcXQ*u`nFy$t+{CjBD}<*jzXXRK zU5#u97gJE2!iqcwuWKcQ z#u6^4bSM^Cz18v*#Pbs8AmDETK6sl*RYz9ycY;GL0vj_#=bRl6=1pz7`dl56&ITMHds(5Vy7E7m;n4Dm(3SJD!H-C_%?IsM=w?%CefRHsx`^zLSNUt1=DRjMzs) z?zGU{GeFW*Ol1ELc{(k?(A~t^hM%QU@CVYe=CiBY58C?}Bhl4Qk|3hjt#4bPmv%vd zof%*ksc7aY9_)NbR$D4pGCdbXu!kozHaf5l$e^=Y;-a7@4P_?A#qD!5 zMQa+PBjIT(&XVqKhk09A)ektT3S>ep$jN%5usHw-FlIyflDWU_75M(m(C91?U4C}M zidlyw58}Z!{R$c%wi1ORMCT05DRA})BZ|4$-`+}#M-<|BXiSdWZ^zR7pO3oUbSV(R zG@TWH$Q(tylyO&Ph=yK^)9of|a>v%>1Jd6b_}q5Bt2q_P_Z!zrmUA*2$Y3MfF1!+8 zakGuCPa&T1VYROU3DcN>uEAk%-RJdND)oVq*7JJf8`qh~_MunJh?RSM>E0)aUc6b2 z0;B4QmAT{qeQ;K076H=Z7-}&*l*WkLA4JD>3FFP~t+AsUPAh2Qgt9=eA%~tyLX?BF zOb2Z3&f;MtD6h)1RsaP%-YES7dLrfXIV zrrnXjheeZTLRNl6+%neyNpMNNAUH6v@XIb~W+)4>$#){V z%#Xc&f9e##kH=-8xHyA#cLPD z0aio^#XP?6jt@V>7_{w(i|aHWgMfkq#8QE3YXUwWouhNh5kK7xb!Fg^Z*QKp+Z~Ih zE)jQLO@n8#(X=~l@0t%LjV_Bb*t&=6Xko>3P^!>6w7C`V{o9CrI4mUAJzhJHhq-u) zR{+=(@}(WntSke9gU*eO)XV4`!aR!yNc zDS`r(vd@qXDm+P>={`Xn2Co-iOuxPyw#Cmn8TcAh0|5q;y7J*CX#J}qyd-XslWaFi zq%&PMr%YoCR?%4gE8zvOg3shWHL!~N9DUent*y`K<&)hXnuKPG2 zw;_mr=-P-17u!x?pYDm;?RjY>RWp4x4~rx{csfKK!*R1ve`x1Bl@beP_ubPB8-6l) zK{g{;q{gEQ5$~@d>U7?-ALH5_``NX(*kj#D)Ev>a_^Wp5nGM&&?BV#_EcQK_k?{7n z?_*WXYKR68HbBJU1QzmD~yNya8khNJDs^M~Br}d9-0$Rq1UAQEuZY!k6Ppr2(+D=-p#T;Q+z$OfhYEoJxENV5 zD=TsR)kOSn`|^+4^DkWoe92&Zb{Yf9=)-d7XvJ#He!C@|UvZuD+XzrVg@E7#nyC&5 zVSeRW`~G=cgO|~|t-^qEtX#Bdk5UAHiSMUR zfglMcszTwH=?UG&oRkU;p5Y;+(`#^(+z)lUJY|v;nH--7(Ad0^fp3tdA;Kb1vmF;Y zl&XPpI#S6n5CFj-&o@&fV8`Nbn`2^yef@gIG6CszJYEa@PsnMUZtSU)m#SeUC1zYF zCV~=^)tg&*)&xwDOwytEfMm!@P+CZdA0us9H&vx1xBU?fGinnM2I*Kg2rPLFS3G=I zf`@i?Hy`dK(iO z9GWff*JlFm@RIqXjZ`}+C4<%0C!CnOr>+cn)oy(sJcoc9#=mRNzt>d4K{{JNu3ZES zN6DGk%`FUQpfR4@Vg-KRZv7^&eSmuO=;=mBu;OqZUF-om$5+5hcHQ>^aETRD?M65f zAax3?bHfnN$RnJ1($OkYqamo!M=G2@n$xZXTz5R>kYEbHhG=@(+_P4`9ij{=fo~hqh|}6nz31jL4y# zLjT=n0^;a@HTr*rLEt-pSZn3yXKC~!YWj~1no;b(a=8C@ass~l*Zc(P@0b2pV+}B{ z|DPJ`zk=$2--r?7@BS~}7I=u8`fdx~&yy+Oda0&M1puv*8qNIbg+Yc0@Z9mXlWVnzKZyQIDgOVSd*lerPk`w0 z9{jlkg}({pL*oCxbI7NoGNHh9Ba@8d#G5Z^MnY-R`nx+7j~QU0uBmv?IWv|yf(K3*2m&8nPG?yAGZ$;c zHb&Ut<(~@b+cCI5#g>LuWqq0m2ej72-`Z{p&fnmxE7^dk5}?dLyty`BCM&~j>0($@ z2Izi%wdmy zU^ykjQ^#h)>RWO#H|!O-zhHdvbZH#*KC;>3H+UYv>$OGEbTD{r{aI7WFueYB)6%a8 zs|47Fw`>=~uYw+8Eu!3scyPT)aRK|patZo!buO=4l@8#L0*{JZpb(e$1CHvboqCY> z5Ln2wjee9mTIzqpj{$9`m~WU$k(;|~06mcXI-J_>UqYOzp#sW_8w30PG`p__oXSO_ zU~W%G7m)$7hbQ^LOW;i9Zud1&PUi4|K1F8wzQ3|+O*?^iMJ<<23;$dfEmCt%uEqr)cC@Xgka;J#Yg(%bqboxm{(byH+x*_BP z!hsr4?4Al6zFVB^>6mBD(mct{JK`sC-Dh~J-b?67e>$>Wn1 ze@R(%4u6X2=jG=cPv<~V`RQ_tQl|F*)OGIhOz(djm!(9eixcHiC`Imb*9a}DWhsed zi>X|432|IzC+2=X?vX+$np?{yja;_n8i^V+*W9noWpio2&pG{b{`vj)eeChrAKyRr z+57W;zhBR%7i(4e`+H#HI#p7&5x*Fj0{%n6uCWW3X@Pr>P+up2#-+kR{A!ztP+YnZ zUh9~$cS)Z)wf)2h9NUyATcmvQrDLAnzBYvm4i>cXkIv(JVGH6dPS?^2yrZDG#iwy# zEbMTF`&=V2Faae6>$Z@7Fd)E>9KsJ;rhH6;(+XoHQ=TS4T>Zvg{lZ49QLJ=s0C$^~ zCZc|7{Knq(nSdo?GT6%s9#;?XosmOI>hm90WN_zC;{ttx0Yu@B-u_8SNtFq%L((nS zK&qD}6hG4!=A18bB9P@Up$_ATWHcSQ= z5vs@z8MpXnspAo*0R+cfuCXA_yKEN&% z;G}~W4f=%Pjf^|&Cwo1o5)nk%CORFgQOJ>swn@#-uO~%7&CspHlB#C6iYfNPZcMEu0i@ zqo~d`VDi(=nw9!i7R9FmFadF6V=wuIej*5qtmkRkkJ3$-awsGO*x_gTFQQor#d{vq z?Am>{&J@8=$7*0{U;rV53~d<|v6dU7{#@~*h2$FtPq*j>DONu{p7SswR-EauZQ@_=9AMC)cSF);%13L(8e$VVS@+LK> z;zwZR+0;IIEn-seuKvU}Sr;pu)YXyA>uqLy;s8KaX)!6?lZ`us&HK=e&8>j<8S}^T z$VsWT?3E2J=dNVoztrUtDUy>p3zQ(zbm6>T{No! z`ohjm;+q>>2iKJNb(Nvz3A46W6$3_0z&g+;uK{-{bNcZSImny#ie6FR4)h2b7zoMx z(q{{07~%zbpK`o8{QxzH@$mg%li0BFs*!xtB@SKWA+8;Is?B9BVpti7iM)IgRczi# zYJxL(>ODQJY`FKVULH8yV({BLh6%$kQ@La(jR7mQcedcABMxx4CQ+|nSyJuH>OWfw zbvu&RIM1g!v_jfaCebr7zhINIv{oVdH`pz;xT%P#d+X9`5GfMfT?={t9Xg`7%q; zrN+@1D`xoFPLF02NSEE^qxvKdU-Ur*+w^#86hr@;lSc3cZ59x2B>sQ`iKEoPW9&B5 z1{p)I;FZaI#-rkt;;8&h?_}&d87g$CT@xVzBqDW>C&gGUmu!AiHxS#}&d&GOHUpK2 z=)N%G>bhC$r$%8P;N7Y5QUv`0^~d!?RLO|yMcpb8*{r>BG20+r?0Gh)LA%}`s6YMr zC=OBF1_db|9=@JS7mO@3>fpe<`1uZUafo;rdg?%VT>lqMeQ6VNo_^cCFTgTF$w6(p z(dC?00dzp|N+nL;<4wOpMg1N?A5nWk^L8~=-%5Bz(oZ(-ho+0R5UVJnj2)5}=v1MT?~DWI+lQFo;}(m7(Dv$Xb$b%xv%z4GZ00EgK}j za535P8-6r$vLj8THzv8$aq37e&*2-DfQ-~^Cx++r^!7KMIx}AZV~@mq9TE^Sw$BSw zQ7R#54+MA!>liH6dk#;iL8SMV;kLy))C#+*OFRr+O`Sa(oETbm`eB9lC+|&61P0bf zqsPZys&0*da)JAX=|3^S_X;K0;L1qDAvMdawS^Lo#9Yvm)L)A?_c(wFUO)Df*w@!V zlLbcJz|mlaH<)q`)v!LfqL_^&sj3BdR|a}@SK#B;Vo3(Y+vA%Cs?>eYm%BOBJc!2B zzY4aL4wT#0dYRnd0{aZVEr7*ltVM=qwMAy-916F0bPeqH8DKZ2NhP0RJR6^#Ka&&* zm_qxY%g*HLy&VGiJ*p0OQ9*aBO9y>DNzU%rb`QV4(2?~KIUcI=8Hr3wmmF5d2Oikb zLl7Ekc&*M}u6p7_K^5uVHRWFhIT5Iw2S}CHNn=$>69`noFeZ$UqDVAP=+A1uV|g9w z{9L1$>n%Lo1aIuQZFadGRK%N{@dpM0KXOrM+l*w)ZVZ*ungmnsLSOz-nX9BMPrQq4 z>iGxU4?FYTRZ%cJp-cD}7KorilbOqKVTY?>7uG7%5p zs%)*kDJzP3JD!n?Gv>vOSdo~6vg<)(TNss5bQ9nB*P+hZ#cJ<Z)%1UzHZ8u3k>4 zjBdLaA2swSLCLmG@M)zz&0hH+^f9=R0LLc9NZCYmS8vGok7*S_r{yIOyE_gRdinaC z*ASHNr3rJE>k0%h+Y$?$rgj(`qJ67~ozig{y>+ZYdBXm-a3tl#%O<7#CqG&1k??el z;0p~v8Ex7;H?w%i(d7-8nv{JnpPEB(;l7{e^*x@l*G2I%6+OS`J>DiuIAoNLvv=c{GR`{v^@C$|KcR>1H)8XZwp@n@#{KmsA%%WNbv}q)!j+l zSfBou4@1V%Fgwv%O4~Dgr_>(TOJ3izKC{UhTeJRa72stS;!t=~p3+=wQ)Qt0sM4ID zguy{k;e@DO5e>u74I8rO+PhC+*h@%32T{}&<4?7>u4?`5U>>nGq=oJvOqZd{(r*V{ zmAw+@P2eM1olQmKzQ86f@Y7uaG$gXKR!f*fw>>owuNdw4D&`;rv)gXKDqrtSz2t5Y zArhzWOdN7HJlmCA^APNBdySnfM#G%d2(nJLmnO;E>{Czx(ht)`R8zl@I2HV V50EdR(7-1=mk{O`N{#P^{11T-VX6QC diff --git a/tests/integration/content-aware-resize.test.ts b/tests/integration/content-aware-resize.test.ts index 7ef21283..4baf6e14 100644 --- a/tests/integration/content-aware-resize.test.ts +++ b/tests/integration/content-aware-resize.test.ts @@ -1,10 +1,9 @@ /** - * Integration tests for the content-aware resize (seam carving) API endpoint. + * Integration tests for the content-aware resize (seam carving via caire) API endpoint. * - * This tool uses the Python sidecar, so in CI/test environments where Python - * is not available the route will return 422 (Python error). - * Tests gracefully handle both scenarios while still verifying route existence - * and input validation. + * This tool uses the caire Go binary. In environments where caire is not + * installed the route will return 422. Tests gracefully handle both scenarios + * while still verifying route existence and input validation. */ import { readFileSync } from "node:fs"; @@ -49,8 +48,7 @@ describe("Content-Aware Resize", () => { body, }); - // 200 = Python available, 422 = Python error - // Any of these proves the route is registered and reachable + // 200 = caire available, 422 = caire not found expect([200, 422]).toContain(res.statusCode); }, 60_000); @@ -72,6 +70,27 @@ describe("Content-Aware Resize", () => { expect(res.statusCode).toBe(400); }); + it("rejects requests without width, height, or square", async () => { + const { body, contentType } = createMultipartPayload([ + { name: "file", filename: "test.png", contentType: "image/png", content: PNG_200x150 }, + { name: "settings", content: JSON.stringify({ protectFaces: false }) }, + ]); + + const res = await app.inject({ + method: "POST", + url: "/api/v1/tools/content-aware-resize", + headers: { + authorization: `Bearer ${adminToken}`, + "content-type": contentType, + }, + body, + }); + + expect(res.statusCode).toBe(400); + const resBody = JSON.parse(res.body); + expect(resBody.error).toContain("width, height, or square"); + }); + it("processes with only width specified", async () => { const { body, contentType } = createMultipartPayload([ { name: "file", filename: "test.png", contentType: "image/png", content: PNG_200x150 }, @@ -88,7 +107,7 @@ describe("Content-Aware Resize", () => { body, }); - // Accept 200 (Python available) or 422 (Python not available) + // Accept 200 (caire available) or 422 (caire not available) expect([200, 422]).toContain(res.statusCode); if (res.statusCode === 200) { @@ -123,10 +142,10 @@ describe("Content-Aware Resize", () => { } }, 60_000); - it("rejects enlargement beyond source dimensions", async () => { + it("supports enlargement via seam insertion", async () => { const { body, contentType } = createMultipartPayload([ { name: "file", filename: "test.png", contentType: "image/png", content: PNG_200x150 }, - { name: "settings", content: JSON.stringify({ width: 400, protectFaces: false }) }, + { name: "settings", content: JSON.stringify({ width: 300, protectFaces: false }) }, ]); const res = await app.inject({ @@ -139,14 +158,116 @@ describe("Content-Aware Resize", () => { body, }); - // 422 = Python caught the enlargement error - // Should never be 200 since 400 > 200px source width - expect(res.statusCode).not.toBe(200); - expect(res.statusCode).toBe(422); + // 200 = caire enlarged successfully, 422 = caire not available + expect([200, 422]).toContain(res.statusCode); - if (res.statusCode === 422) { + if (res.statusCode === 200) { const resBody = JSON.parse(res.body); - expect(resBody.error || resBody.details).toBeDefined(); + expect(resBody.downloadUrl).toBeDefined(); + expect(resBody.width).toBe(300); } }, 60_000); + + it("accepts blurRadius and sobelThreshold options", async () => { + const { body, contentType } = createMultipartPayload([ + { name: "file", filename: "test.png", contentType: "image/png", content: PNG_200x150 }, + { + name: "settings", + content: JSON.stringify({ + width: 150, + protectFaces: false, + blurRadius: 6, + sobelThreshold: 4, + }), + }, + ]); + + const res = await app.inject({ + method: "POST", + url: "/api/v1/tools/content-aware-resize", + headers: { + authorization: `Bearer ${adminToken}`, + "content-type": contentType, + }, + body, + }); + + expect([200, 422]).toContain(res.statusCode); + + if (res.statusCode === 200) { + const resBody = JSON.parse(res.body); + expect(resBody.downloadUrl).toBeDefined(); + expect(resBody.width).toBe(150); + } + }, 60_000); + + it("supports square mode", async () => { + const { body, contentType } = createMultipartPayload([ + { name: "file", filename: "test.png", contentType: "image/png", content: PNG_200x150 }, + { name: "settings", content: JSON.stringify({ square: true, protectFaces: false }) }, + ]); + + const res = await app.inject({ + method: "POST", + url: "/api/v1/tools/content-aware-resize", + headers: { + authorization: `Bearer ${adminToken}`, + "content-type": contentType, + }, + body, + }); + + expect([200, 422]).toContain(res.statusCode); + + if (res.statusCode === 200) { + const resBody = JSON.parse(res.body); + expect(resBody.downloadUrl).toBeDefined(); + // Square mode produces equal width and height + expect(resBody.width).toBe(resBody.height); + } + }, 60_000); + + it("rejects invalid blurRadius", async () => { + const { body, contentType } = createMultipartPayload([ + { name: "file", filename: "test.png", contentType: "image/png", content: PNG_200x150 }, + { + name: "settings", + content: JSON.stringify({ width: 150, blurRadius: 50 }), + }, + ]); + + const res = await app.inject({ + method: "POST", + url: "/api/v1/tools/content-aware-resize", + headers: { + authorization: `Bearer ${adminToken}`, + "content-type": contentType, + }, + body, + }); + + expect(res.statusCode).toBe(400); + }); + + it("rejects invalid sobelThreshold", async () => { + const { body, contentType } = createMultipartPayload([ + { name: "file", filename: "test.png", contentType: "image/png", content: PNG_200x150 }, + { + name: "settings", + content: JSON.stringify({ width: 150, sobelThreshold: 0 }), + }, + ]); + + const res = await app.inject({ + method: "POST", + url: "/api/v1/tools/content-aware-resize", + headers: { + authorization: `Bearer ${adminToken}`, + "content-type": contentType, + }, + body, + }); + + expect(res.statusCode).toBe(400); + }); });

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