PDA

View Full Version : [php]resize img


Pro7on
02-05-2007, 10:54
ciao gente, come facccio in php a rinpicciolire una img?

andbin
02-05-2007, 11:09
ciao gente, come facccio in php a rinpicciolire una img?Ad esempio usando le funzioni della libreria GD, vedi funzione imagecopyresized (http://it.php.net/manual/en/function.imagecopyresized.php) (o imagecopyresampled).

Pro7on
02-05-2007, 14:48
mi stampa sta roba, errore xche? poi la roba sotto sarebbe img in formato testo?


Warning: Cannot modify header information - headers already sent by (output started at C:\Xampp\xampp\htdocs\dev\dev\imagephp\index.php:7) in C:\Xampp\xampp\htdocs\dev\dev\imagephp\index.php on line 14
˙Ĝ˙à�JFIF�..........Sû£Ż˘Š(¨İ°˙Ù

andbin
02-05-2007, 15:00
mi stampa sta roba, errore xche? poi la roba sotto sarebbe img in formato testo?Dipende da cosa hai fatto! Cosa devi fare di preciso: ridimensionare una immagine e scriverla in un file sul server? ridimensionare una immagine e mandarla verso il browser? In quest'ultimo caso devi gestire una "request" a sé stante, cioè non puoi mandare l'immagine mentre stai mandando in output la pagina html.

P.S. era meglio se non postavi tutto il codice binario ... ;)

Pro7on
02-05-2007, 15:07
e devo fare in modo che tramite un form io invio la img al server e la resaizo in caso di eccessa grandezza e poi la stampo a screen >_<''

andbin
02-05-2007, 15:12
e devo fare in modo che tramite un form io invio la img al server e la resaizo in caso di eccessa grandezza e poi la stampo a screen >_<''Sì ma vuoi mandare in output direttamente l'immagine (come se digitassi nella barra del browser http://www.blabla.com/unaimmagine.jpg) o dentro una pagina html usando il tag <img>??

Pro7on
02-05-2007, 15:15
Sì ma vuoi mandare in output direttamente l'immagine (come se digitassi nella barra del browser http://www.blabla.com/unaimmagine.jpg) o dentro una pagina html usando il tag <img>??


tramite <img>

andbin
02-05-2007, 15:28
tramite <img>Allora è un po' più complicato.
Pensaci, succede questo:
- Su una pagina web hai un form, per fare l'upload di un file (immagine)
- Quando invii il form, viene fatta una "request" alla pagina PHP che dovrà gestire l'upload
- Nella pagina PHP che gestisce l'upload farai quello che vuoi con l'immagine (nel tuo caso la ridimensioni).

Però poi hai 2 possibilità: o mandi direttamente l'immagine, o mandi una pagina html in output. Nel secondo caso non puoi mandare in output anche l'immagine, visto che mandi solo codice html.

Nella pagina html avrai quindi un tag così: <img src="???che ci metti qui???">
La questione è appunto cosa specificare per fare una nuova request per ottenere l'immagine. Nello script che gestisce l'upload potresti memorizzare l'immagine da qualche parte sullo spazio web, in modo da mandare in output il path corretto in src.

Insomma, hai già capito, si tratta solamente di stabilire come rendere "persistente" l'immagine tra due request differenti.

Pro7on
02-05-2007, 15:31
ma adesso il probblema e resizare poi il dopo nn mi interessa adesso... cmq cosa sognifica request?

andbin
02-05-2007, 15:44
ma adesso il probblema e resizareAllora vedi il link che ho indicato sopra.

poi il dopo nn mi interessa adesso... cmq cosa sognifica request?request=richiesta
HTTP è un tipico protocollo client/server. Il client (browser) fa una richiesta ad un server (server web) il quale risponde inviando una risposta (un documento, immagine, ecc...)

Pro7on
02-05-2007, 16:00
e ma nn capisco a cosa si riferisce l'errore ....


Warning: Cannot modify header information - headers already sent by (output started at C:\Xampp\xampp\htdocs\dev\dev\imagephp\index.php:7) in C:\Xampp\xampp\htdocs\dev\dev\imagephp\index.php on line 14

e quel header che nn li piace???

andbin
02-05-2007, 16:09
e ma nn capisco a cosa si riferisce l'errore ....Allora:

header('Content-type: image/jpeg');

serve per specificare il content-type, cioè il "media type" del contenuto inviato in output.

imagejpeg(....);

serve per mandare fisicamente in output i dati binari della immagine jpeg.

La questione principale è che header() va chiamata prima di aver fatto qualunque tipo di output (es. echo da php o testo fuori dal <?php ?>).

Ma non avevi detto che la questione dell'output non ti interessa in questo momento???

Pro7on
02-05-2007, 16:13
Allora:

header('Content-type: image/jpeg');

serve per specificare il content-type, cioè il "media type" del contenuto inviato in output.

imagejpeg(....);

serve per mandare fisicamente in output i dati binari della immagine jpeg.

La questione principale è che header() va chiamata prima di aver fatto qualunque tipo di output (es. echo da php o testo fuori dal <?php ?>).

Ma non avevi detto che la questione dell'output non ti interessa in questo momento???


infatti...a me basta che mi resaizza la img e basta

andbin
02-05-2007, 16:24
infatti...a me basta che mi resaizza la img e bastaOk ma usare imagecopyresized/imagecopyresampled ti serve a ben poco se poi non la mandi in output subito o non la memorizzi da qualche parte (per una successiva richiesta del browser).

Pro7on
02-05-2007, 16:30
Ok ma usare imagecopyresized/imagecopyresampled ti serve a ben poco se poi non la mandi in output subito o non la memorizzi da qualche parte (per una successiva richiesta del browser).



haa, e infetti dovrei mandarla subito dopo .... --

andbin
02-05-2007, 16:36
haa, e infetti dovrei mandarla subito dopo .... --Ma hai letto/capito cosa ho detto nel post #8??
Se a seguito dell'upload mandi in output un documento html (che contiene il tag <img> per l'immagine), devi memorizzare da qualche parte l'immagine in modo che sia disponibile quando il browser farà la request usando il URL che trova in src.

Pro7on
03-05-2007, 10:50
Ma hai letto/capito cosa ho detto nel post #8??
Se a seguito dell'upload mandi in output un documento html (che contiene il tag <img> per l'immagine), devi memorizzare da qualche parte l'immagine in modo che sia disponibile quando il browser farà la request usando il URL che trova in src.


ma nel senso di salvarla fisicamente in una cartella xche se e cosi si c'è ;)..


ma cmq un programma che in una cartella o una img e un file php e quel file mi rinpicciolisca img del 10%...:muro:


Ciao Thx ;)

andbin
03-05-2007, 11:39
ma nel senso di salvarla fisicamente in una cartella xche se e cosi si c'è ;)..


ma cmq un programma che in una cartella o una img e un file php e quel file mi rinpicciolisca img del 10%...:muro: Se vai a vedere, imagejpeg() ha un secondo parametro opzionale (e anche un terzo, sempre opzionale per la qualità) per specificare un nome di file su cui salvare l'immagine.

Una volta che hai ridimensionato l'immagine la salvi su un file come appena detto. Quindi nel documento html che generi devi mettere nell'attributo src di <img> il path in modo da fare riferimento a quella immagine salvata.

Pro7on
03-05-2007, 12:04
Se vai a vedere, imagejpeg() ha un secondo parametro opzionale (e anche un terzo, sempre opzionale per la qualità) per specificare un nome di file su cui salvare l'immagine.

Una volta che hai ridimensionato l'immagine la salvi su un file come appena detto. Quindi nel documento html che generi devi mettere nell'attributo src di <img> il path in modo da fare riferimento a quella immagine salvata.



Thx provo e ti dico ;)...



Cmq thx per la pazienza e per le risposte ;):D :D