Ecco un modo semplice per creare, tramite PHP, il negativo di una immagine o di una foto e successivamente da quest’ultima crearne una in bianco e nero.
Questo è il codice php:
<?php
//stabilisco dov’è la foto
$image_path = “../_images/img1.jpg”;//FILTRO NEGATIVO
$im = imagecreatefromjpeg($image_path); //crea l’img temp
imagefilter($im, IMG_FILTER_NEGATE); // applica filtro
$image_path_neg = substr($image_path, 0, -4).”_neg.jpg” ; //stabilisci il nome del nuovo file
imagejpeg($im, $image_path_neg); // crea il file
imagedestroy($im); // libera la memoria cancellando il file img temp//FILTRO BIANCO E NERO PARTENDO DALL’IMG NEGATIVA
$im = imagecreatefromjpeg($image_path_neg); //crea l’img temp partendo dall’img negativa
imagefilter($im, IMG_FILTER_GRAYSCALE); // applica filtro
$image_path_bn = substr($image_path, 0, -4).”_bn.jpg” ; //stabilisci il nome del nuovo file
imagejpeg($im, $image_path_bn); // crea il file
imagedestroy($im); // libera la memoria cancellando il file img tempecho “<br/> <img src=\”$image_path\” /><br /><img src=\”$image_path_neg\” /><br/><img src=\”$image_path_bn\” /><br/>”; // stampa
?>
Lo script crea un immagine temporanea tramite imagecreatefromjpeg a cui applica il filtro imagefilter. Quindi creo il nome del nuovo file tramite una sottostringa del nome del file originale, toglo gli ultimi 4 caratteri (ovvero il .jpg) e poi aggiungo il suffisso _neg o _bn rispettivamente per il filtro negativo e per quello bianco/nero e quindi rimetto l’estensione .jpg .
Dopodiché creo il nuovo file con imagejpeg e libero la memoria dal file temporaneo con imagedestroy. Infine stampo il tutto tramite un echo.
Ecco il risultato dello script: