Ragazzi,
avevo un problema molto semplice:

avevo un'immagine, in cui gli unici due colori sono bianco e nero (non ESATTAMENTE bianco (255,255,255) e nero (0,0,0), ma colori molto vicini al bianco e al nero).

Volevo, in php, trasformare lo sfondo bianco in sfondo trasparente, ma ho capito che la funzione php imagecolortransparent può rendere trasparente un solo colore, nell'immagine, così mi sono detto:

1) prendo tutti i colori vicini al bianco
2) li rendo ESATTAMENTE bianchi (255,255,255)
3) converto il bianco in trasparente

sembrava facile, ma si è rivelato un inferno: ho capito che gli indici dei colori rimangono distinti anche se il colore è effettivamente uguale, cosi la funzione imagecolortransparent mi rendeva trasparente solo uno degli indici che conteneva il bianco, lasciando invariati gli altri.

Mi chiedo: è possibile che il php non metta a disposizione funzioni per la gestione (eliminazione, modifica, fusione non so....) degli indici di colore??

(alla fine ho risolto costringendo l'immagine ad avere massimo 8 colori diversi e trasformando il colore piùsimile al bianco in trasparente)

vi allego il codice attuale

Codice PHP:

if (isset($GLOBALS["HTTP_RAW_POST_DATA"])) {

     
// Ottengo i dati dell'immagine
     
$jpgData $GLOBALS["HTTP_RAW_POST_DATA"];

      
// Salvo l'immagine in formato jpg (formato in cui mi è arrivata).
     
$jpgURL "../vault/samplePicture.jpg";
     
$jpgFile fopen($jpgURL,"w");
        
fwrite$jpgFile$GLOBALS['HTTP_RAW_POST_DATA']);
        
fclose($jpgFile);           

        
// Apro l'immagine jpg
     
$imageObject imagecreatefromjpeg($jpgURL);

      
// Costringo la palette ad avere massimo 8 indici di colore
     
imagetruecolortopalette($imageObject,false8);
                
        
// Converto il colore più simile al bianco in trasparente
     
$index imagecolorclosest($imageObject255255255);
     
imagecolortransparent($imageObject$index);
             
       
// Salvo l'immaigne in formato png
     
imagepng($imageObject"../vault/samplePicture.png");