fix: loghi insanitylab estratti dal pdf figma al posto dei loghi template
- logo-dark.png (600×108) e logo-light.png (600×342) ora estratti da FigmaDoc/Homepage.pdf via pdftoppm 300dpi + ImageMagick, con alpha - scripts/extract-logos.sh: pipeline riproducibile e idempotente (md5 stabile) - asset-map.json: rimossa sezione fallbacks ../Dati (fonte errata PROWESS++) - apply-asset-map.mjs: commento pipeline aggiornato a 4 step Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -189,3 +189,59 @@ Terza esecuzione `apply-asset-map.mjs + optimize-assets.sh`: md5sum su tutti i .
|
||||
### Esito verifica loghi
|
||||
|
||||
`public/img/logo-dark.png` (130×19, 1725 B) e `logo-light.png` (135×19, 1701 B) sono **identici** ai file sorgente in `../Dati/logo-dark.png` e `../Dati/logo-light.png` (stessa dimensione byte-level). Non sono placeholder: sono i loghi reali InsanityLab copiati dalla sezione `fallbacks` di asset-map.json tramite apply-asset-map.mjs. Le dimensioni in pixel ridotte (130×19 px) sono caratteristiche del PNG sorgente in Dati/, non di un errore di pipeline.
|
||||
|
||||
---
|
||||
|
||||
## Fix round 3
|
||||
|
||||
**Data:** 2026-07-02
|
||||
|
||||
### Problema chiuso
|
||||
|
||||
`public/img/logo-dark.png` e `logo-light.png` contenevano i loghi del template "PROWESS++" copiati da `../Dati/` (sorgente errato). Sostituiti con i loghi reali "insanitylab" estratti vettorialmente dal PDF Figma.
|
||||
|
||||
### Metodo
|
||||
|
||||
Sorgente: `../FigmaDoc/Homepage.pdf` (1334×10460 pt, 1 pagina).
|
||||
|
||||
Render esplorativi a 72–150 dpi per individuare le zone logo:
|
||||
- **Logo dark** (header, fondo bianco): riga nav in alto, x≈25pt, y≈10pt
|
||||
- **Logo light** (footer, fondo scuro `srgb(58,41,41)`): sezione footer, y≈8490pt
|
||||
|
||||
Estrazione finale con `pdftoppm -r 300`, poi ImageMagick:
|
||||
- Dark: `-fuzz 8% -transparent white -trim -resize 600x -strip`
|
||||
- Light: `-crop 850x660+130+60` (esclude tagline e colonne destra), `-fuzz 12% -transparent 'srgb(58,41,41)' -trim -resize 600x -strip`
|
||||
|
||||
`-strip` su entrambi garantisce idempotenza md5sum tra esecuzioni successive.
|
||||
|
||||
### Coordinate pdftoppm a 300 dpi (pixel)
|
||||
|
||||
| Logo | -x | -y | -W | -H | crop interno |
|
||||
|---|---|---|---|---|---|
|
||||
| dark | 104 | 41 | 895 | 250 | — |
|
||||
| light | 0 | 35375 | 1800 | 833 | `850x660+130+60` |
|
||||
|
||||
### Dimensioni finali
|
||||
|
||||
| File | Dimensioni | Tipo |
|
||||
|---|---|---|
|
||||
| `public/img/logo-dark.png` | **600×108 px** | TrueColorAlpha (PNG trasparente) |
|
||||
| `public/img/logo-light.png` | **600×342 px** | TrueColorAlpha (PNG trasparente) |
|
||||
|
||||
### Aggiornamenti pipeline
|
||||
|
||||
- Creato `scripts/extract-logos.sh` (bash, `set -euo pipefail`, coordinate fisse, idempotente)
|
||||
- `scripts/asset-map.json`: rimossa sezione `fallbacks` (loghi ora da extract-logos.sh, non da `../Dati`)
|
||||
- `scripts/apply-asset-map.mjs`: commento pipeline aggiornato a step 4
|
||||
- Ordine pipeline: `extract-fig-images.sh → apply-asset-map.mjs → optimize-assets.sh → extract-logos.sh`
|
||||
|
||||
### Verifica visiva
|
||||
|
||||
- `logo-dark.png`: icona onda/battito cardiaco beige + scritta "insanitylab" scura, layout orizzontale, sfondo trasparente. **Nessun residuo PROWESS++.**
|
||||
- `logo-light.png`: icona onda/battito cardiaco beige sopra, scritta "insanitylab" beige sotto, layout stacked, sfondo trasparente. **Nessun residuo PROWESS++.**
|
||||
|
||||
### Idempotenza
|
||||
|
||||
```
|
||||
md5sum run1 = md5sum run2 → IDEMPOTENTE ✓
|
||||
```
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 26 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 36 KiB |
@@ -1,7 +1,8 @@
|
||||
// Pipeline asset: extract-fig-images.sh → apply-asset-map.mjs → optimize-assets.sh
|
||||
// Pipeline asset: extract-fig-images.sh → apply-asset-map.mjs → optimize-assets.sh → extract-logos.sh
|
||||
// 1. extract-fig-images.sh: estrae hash-named images da .fig → assets-src/
|
||||
// 2. apply-asset-map.mjs: copia da assets-src/ → destinazioni (src/assets/img, public/img)
|
||||
// 3. optimize-assets.sh: converte PNG fotografici → JPG q85, ridimensiona ≤1400px
|
||||
// 4. extract-logos.sh: estrae loghi insanitylab da FigmaDoc/Homepage.pdf → public/img/logo-{dark,light}.png
|
||||
|
||||
import { copyFileSync, mkdirSync, existsSync } from 'node:fs';
|
||||
import { readFileSync } from 'node:fs';
|
||||
|
||||
@@ -33,10 +33,5 @@
|
||||
"c51a49b9be7f1b1a31de6b2f5261c8c5b5fdab52.png": "about-trainer-3.png",
|
||||
"3341a11b7153349a23c75b1fa2a9a62d48953330.png": "about-trainer-4.png"
|
||||
},
|
||||
"fallbacks": {
|
||||
"public/img": {
|
||||
"../Dati/logo-dark.png": "logo-dark.png",
|
||||
"../Dati/logo-light.png": "logo-light.png"
|
||||
}
|
||||
}
|
||||
"_loghi": "logo-dark.png e logo-light.png estratti da extract-logos.sh (FigmaDoc/Homepage.pdf), non da ../Dati"
|
||||
}
|
||||
|
||||
Executable
+53
@@ -0,0 +1,53 @@
|
||||
#!/usr/bin/env bash
|
||||
# extract-logos.sh — estrae loghi insanitylab dal PDF Figma Homepage
|
||||
# Pipeline: extract-fig-images.sh → apply-asset-map.mjs → optimize-assets.sh → extract-logos.sh
|
||||
# Idempotente: stessi file ad ogni esecuzione, coordinate fisse.
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
||||
PDF="$ROOT/../FigmaDoc/Homepage.pdf"
|
||||
OUT="$ROOT/public/img"
|
||||
WORK="$(mktemp -d)"
|
||||
trap 'rm -rf "$WORK"' EXIT
|
||||
|
||||
if [[ ! -f "$PDF" ]]; then
|
||||
echo "ERRORE: PDF non trovato: $PDF" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mkdir -p "$OUT"
|
||||
|
||||
echo "Estrazione loghi da $PDF..."
|
||||
|
||||
# ── Logo DARK (header, su fondo bianco) ─────────────────────────────────────
|
||||
# Zona: x=104, y=41, W=895, H=250 px a 300dpi (pt: x≈25, y≈10, W≈215, H≈60)
|
||||
pdftoppm -png -r 300 -f 1 -l 1 \
|
||||
-x 104 -y 41 -W 895 -H 250 \
|
||||
"$PDF" "$WORK/hdr"
|
||||
|
||||
convert "$WORK/hdr-1.png" \
|
||||
-fuzz 8% -transparent white \
|
||||
-trim +repage \
|
||||
-resize 600x \
|
||||
-strip \
|
||||
"$OUT/logo-dark.png"
|
||||
|
||||
# ── Logo LIGHT (footer, su fondo scuro #3A2929) ─────────────────────────────
|
||||
# Zona: x=0, y=35375, W=1800, H=833 px a 300dpi (pt: x≈0, y≈8490, W≈432, H≈200)
|
||||
# poi crop interno: x=130, y=60, W=850, H=660 per includere solo icona+testo
|
||||
pdftoppm -png -r 300 -f 1 -l 1 \
|
||||
-x 0 -y 35375 -W 1800 -H 833 \
|
||||
"$PDF" "$WORK/ftr"
|
||||
|
||||
convert "$WORK/ftr-1.png" \
|
||||
-crop 850x660+130+60 +repage \
|
||||
-fuzz 12% -transparent 'srgb(58,41,41)' \
|
||||
-trim +repage \
|
||||
-resize 600x \
|
||||
-strip \
|
||||
"$OUT/logo-light.png"
|
||||
|
||||
echo "Logo dark: $OUT/logo-dark.png $(identify -format '%wx%h' "$OUT/logo-dark.png")"
|
||||
echo "Logo light: $OUT/logo-light.png $(identify -format '%wx%h' "$OUT/logo-light.png")"
|
||||
echo "Done."
|
||||
Reference in New Issue
Block a user