Visione: immagini BMP rifiutate (File type image/bmp not allowed) #99
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
src/backend/api/routers/vision.py:86 _read_image accetta solo ALLOWED_IMAGE_TYPES di files.py (jpeg, png, gif, webp). Input: foto Sider/Menoncin BMP 2464x2056 caricata nel wizard «Crea ricetta da DXF» (e in execute/check/preview/reference-images, stesso _read_image) → 400 «File type image/bmp not allowed. Must be an image.». Il worker decodifica BMP (commento a vision.py:46-50) e le foto dei banchi Opto sono BMP. Adriano 25/10/2026.
ANALISI #99 (Opus)
RIF: gitea:Adriano/TieMeasureFlow#99, base ramo lavoro/daitarn-tmf-dxfcal
4b1b23cCOSA: le rotte visione accettano BMP. Solo il router visione: files.py (allegati, serviti per estensione) NON cambia.
FILE: src/backend/api/routers/vision.py
_VISION_IMAGE_TYPES = ALLOWED_IMAGE_TYPES | {"image/bmp", "image/x-ms-bmp"}(commento #99: le camere dei banchi Opto salvano BMP, il worker le decodifica)._read_image: controllo su_VISION_IMAGE_TYPESinvece diALLOWED_IMAGE_TYPES. La firma magic bytesBMc'e' gia' in_IMAGE_SIGNATURES._IMAGE_EXTENSIONS: aggiungere "image/bmp": "bmp", "image/x-ms-bmp": "bmp" (usato da execute riga ~147 per salvare l'immagine del risultato e da reference-images riga ~313, che fa KeyError senza)._IMAGE_SIGNATURES(ora BMP e' anche nella lista ammessa; TIFF resta fuori: i browser non lo mostrano nel risultato).ALLOWED_IMAGE_TYPESnon e' piu' usato in vision.py, togliere l'import (non toccare files.py).TEST (src/backend/tests, file nuovo test_vision_bmp.py o accanto ai test di _read_image esistenti — cerca "not allowed" nei test):
NON TOCCARE: src/backend/api/routers/files.py, settings.py, frontend, src/vision_worker.
Soluzione
ESITO: fatto
FILE: src/backend/api/routers/vision.py — _VISION_IMAGE_TYPES = ALLOWED_IMAGE_TYPES | {image/bmp, image/x-ms-bmp} usato in _read_image; bmp in _IMAGE_EXTENSIONS (reference-images salva .bmp). files.py invariato.
TEST: src/backend/tests/test_vision_bmp.py (5).
COMMIT:
444dc0a, mergeb78f242su lavoro/daitarn-tmf-dxfcal (pushato).PROVA: pytest test_vision_bmp.py → 5 passed; test_vision*.py → 89 passed (Sonnet); TMF daitarn riavviato 15:48, POST /api/vision/tasks/8/recipe/dxf-compare con sider_2_1.bmp (image/bmp) + MEVIS dxf, px_per_mm 71.11, save=false → HTTP 200.