feat: comprehensive HEIC/HEIF support and edit-metadata ExifTool overhaul

- Add ensureSharpCompat() helper for automatic HEIC detection and decode
- Fix HEIC support in all 14 custom-route tools (image-to-pdf, split,
  barcode-read, compose, collage, stitch, compare, find-duplicates,
  color-palette, watermark-image, vectorize, favicon, info, branding)
- Fix PdfPagePreview using store's decoded blobUrl instead of raw File
- Add onError fallback in ImageViewer for unrenderable formats
- Fix image-to-pdf progress bar with flushSync for reliable rendering
- Add ExifTool backend for edit-metadata (GPS, keywords, IPTC, dates)
- Rename Strip Metadata to Remove Metadata with interactive Leaflet map
- Fix user-files thumbnail generation for stored HEIC files
- Fix info tool stats() histogram for HEIC via decoded buffer
- Skip HEIC preprocessing in batch route for metadata tools
This commit is contained in:
Siddharth Kumar Sah
2026-04-12 08:50:19 +08:00
parent 6f5283019b
commit dde70f70ad
32 changed files with 1423 additions and 347 deletions
+1 -1
View File
@@ -57,7 +57,7 @@ export const TOOLS: Tool[] = [
// Optimization
{
id: "strip-metadata",
name: "Strip Metadata",
name: "Remove Metadata",
description: "Remove EXIF, GPS, and camera info",
category: "optimization",
icon: "ShieldOff",
+5 -2
View File
@@ -35,8 +35,11 @@ export const en = {
rotate: { name: "Rotate & Flip", description: "Rotate, flip, and straighten images" },
convert: { name: "Convert", description: "Convert between image formats" },
compress: { name: "Compress", description: "Reduce file size by quality or target size" },
"strip-metadata": { name: "Strip Metadata", description: "Remove EXIF, GPS, and camera info" },
"edit-metadata": { name: "Edit Metadata", description: "Edit EXIF, GPS, and camera info" },
"strip-metadata": { name: "Remove Metadata", description: "Remove EXIF, GPS, and camera info" },
"edit-metadata": {
name: "Edit Metadata",
description: "Edit EXIF, IPTC, XMP, GPS, keywords, and dates",
},
"bulk-rename": { name: "Bulk Rename", description: "Rename multiple files with patterns" },
"image-to-pdf": { name: "Image to PDF", description: "Combine images into a PDF document" },
"pdf-to-image": { name: "PDF to Image", description: "Convert PDF pages to images" },