Orion42 Blog

~IT made easy~

Computer e tecnologia Web e Internet

Creare il negativo di una immagine con php imagefilter

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 temp

echo “<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:

A sinistra l'immagine originale, al centro è stato applicato il filtro negativo e a destra i filtri negativo e bianco e nero.

Infine volevo segnalarvi questo link che mi ha dato spunto per scrivere questo articolo e potete trovare il codice anche per gli altri filtri disponibile tramite imagefilter.

Rispondi