Archivio

Articoli taggati ‘php’

Creare il negativo di una immagine con php imagefilter

settembre 26, 2010 Lascia un commento

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.

[Risolto] Easyphp fatal error include_path=’.;C:\php5\pear’

settembre 24, 2010 Lascia un commento

Mi è capitato di aver appena reinstallato Easyphp e mi sono accorto che se provavo ad eseguire un include/require in un file php mi veniva restituito un warning ed un fatal error :

Warning: require_once(mysite/_include/before_close_head.tpl) [function.require-once]: failed to open stream: No such file or directory in I:\EasyPHP\www\mysite\index.php on line 51Fatal error: require_once() [function.require]: Failed opening required ‘mysite/_include/before_close_head.tpl’ (include_path=’.;C:\php5\pear’) in I:\EasyPHP\www\mysite\index.php on line 51

In breve Easyphp non riusciva a trovare il file da includere perché sbaglia la directory base, andando a cercare erroneamente in “C:\php5\pear”.  Ora spiegherò come risolvere il problema.

Dobbiamo aprire il file di configurazione di php. Possiamo farlo o  cliccando col destro sull’icona del programma nella TrayIcon (quelle icone vicino all’orologio in basso a dx nella barra di avvio) e clicckiamo su configurazione e poi su php oppure andando nella cartella dove abbiamo installato easyphp, aprendo la cartella conf_files e quindi php.ini.

A questo punto cerchiamo nel file (modifica>trova/cerca)  la stringa include_path (di solito non è la prima occorrenza), finché non troviamo una porzione di codice simile a questa:

;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;

; UNIX: “/path1:/path2″
;include_path = “.:/php/includes”
;
; Windows: “\path1;\path2″
;include_path = “.;${path}\php\includes”

; PHP’s default setting for include_path is “.;/path/to/php/pear”
; http://php.net/include-path

Nella penultima riga compare proprio quello che stavamo cercando :

; PHP’s default setting for include_path is “.;/path/to/php/pear”

ovvero l’impostazione predefinita per la cartella dell’include è “.;/path/to/php/pear”

Per tornare a far funzionare il tutto basta aggiungere una riga di codice;  per comodità la inserisco  subito sopra:

; Windows: “\path1;\path2″ ;include_path = “.;${path}\php\includes”

include_path = “.;${path}\php\includes;I:\EasyPHP\www\”

; PHP’s default setting for include_path is “.;/path/to/php/pear”
; http://php.net/include-path

La riga inserita è quella in rosso ed è molto simile alla riga subito sopra, la quale indica la corretta sintassi per il comando da inserire. Il punto e virgola che compare all’inizio di alcune righe sta ad indicare che tutta la riga sarà ignorata, infatti il ; indica un commento.

La riga che abbiamo inserito indica alcuni possibili indirizzi dove andare a cercare i files, ognuno dei quali separati da un punto e virgola.

Ho inserito alcuni indirizzi tipici di alcune versioni di easyphp ed infine, e più importante, la cartella dove ho attualmente installato easy php che nel mio caso è proprio I:\EasyPHP\www\

Quindi nel vostro caso basta inserire una riga del tipo:

include_path = “.;${path}\php\includes;${path}\php5\pear\;Unitàdisco:\Cartella di installazione di EasyPHP\www

oppure solo

include_path = “.;Unitàdisco:\Cartella di installazione di EasyPHP\www

dove Unitàdisco:\Cartella di installazione di EasyPHP\www va sostituito con il percorso della cartella www all’interno della cartella dove avete installato easyphp, ad esempio “c:\Easyphp 5.3.0\www” oppure “d:\Easyphp\www .

Un ultima cosa: fate attenzione ad inserire correttamente il backslash “\” per separare le cartelle e non lo slash normale “/”.

Iscriviti

Get every new post delivered to your Inbox.