Recentemente abbiamo parlato di come poter ritagliare un’immagine utilizzando Php e la funzione imagecopy messa a disposizione dalla libreria GD2. Come vi avevo promesso oggi invece parleremo di un’altra utilissima funzione che ci viene data dalla GD2: imagecolorat.
Con questa funzione potremo trovare tutti i colori presenti in un’immagine, semplicemente passando le coordinate del pixel che ci interessa.
Come esempio utilizzeremo sempre la nostra solita immagine
Ipotizziamo di voler scoprire il colore dell’immagine alle coordinate 10;15. Andiamo quindi a vedere il codice Php per ricavare l’RGB:
1 | $img = imagecreatefrompng("images/imgProva.png"); |
Utilizzando sempre il nostro imagecreatefrompng istanziamo un immagine passando il path della nostra immagine da analizzare. Vi ricordo, come sempre, che la funzione utilizzata fa riferimento a una png, per diversi tipi di immagini andranno utilizzate le relative funzioni.
2 3 | $rgb = imagecolorat($img, 10, 15); $colors = imagecolorsforindex($img, $rgb); |
imagecolorat ci restituisce l’indice del colore prendendo come parametri l’immagine istanziata e le coordinate che ci interessano, nel nostro caso l’indice è 2127258.
Come potete vedere l’indice non è ancora l’RGB, bisogna quindi utilizzare imagecolorsforindex con cui ricaviamo un array con l’esatto RGB. Questa funzione richiede due parametri: l’immagine istanziata precedentemente e l’indice trovato con imagecolorat.
Abbiamo trovato l’RGB delle coordinate passate, per poter vedere il risultato basta fare un var_dump della nostra variabile $colors.
Nell’esempio specifico il var_dump restituisce:
array(4) { [“red”]=> int(32) [“green”]=> int(117) [“blue”]=> int(154) [“alpha”]=> int(0) }
Ne ricaviamo che l’RGB è R:32, G:177, B:154.