|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Aug 2004
Città: Milano
Messaggi: 1310
|
[PHP] Resize immagine per ottenere Thumbnail quadrata
Ho creato il seguente codice per ottenere da un'imagine di qualsiasi formato e dimensione una thumbnail quadrata di 120x120px.
Il problema è che il quadrato viene preso partendo da sinistra o dall'alto, mentre a me servirebbe ritagliare la porzione quadrata partendo dal centro. ESEMPIO: Immagine: 160x120 Ora mi ritaglia 4pixel da destra, mentre io vorrei far si che ritagli 20 pixel a destra e 20 a sinistra. EDIT Ultima modifica di Fede 88 : 05-12-2009 alle 13:44. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Devi ritagliare un quadrato 120x120 dalle coordinate
x = (larghezza - 120) / 2 y = (altezza - 120) / 2 |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Aug 2004
Città: Milano
Messaggi: 1310
|
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Credo nella chiamata a questo metodo:
Codice:
imagecopyresampled($new_image, $image_source, 0, 0, 0, 0, $crop_w, $crop_h, $orig_w, $orig_h);
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Esattamente. Quella funzione però fa anche altre cose. Non è così immediato adattarla, ci devi lavorare un po' su.
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 654
|
oppure tira giu e modifica jquery uploadify che lavora molto bene e da modificare non è difficile
__________________
Macbook Pro 15'' Mid 2015 |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Non è difficile da modificare questa, serve solo di capire cosa vuole fare in condizioni particolari.
Ad esempio, se l'immagine è più piccola di 120x120 oppure se è ancora interessato alle altre funzionalità che offre la funzione sopra. |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Aug 2004
Città: Milano
Messaggi: 1310
|
nel caso (remoto) in cui l'immagine sia più piccola di 120x120 sarebbe meglio ingrandirla, e successivamente, se non è quadrata, ritagliare le parti di troppo.
|
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Ma tu sai usare PHP ?
|
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Aug 2004
Città: Milano
Messaggi: 1310
|
Si, non sono un esperto, però so usarlo, solo che ho qualche problema con la funzione "imagecopyresampled" anche guardando sul sito di php non capisco bene il funzionamento.
Ho provato a modificarlo anche inserendo le tue formule però ritaglia male, l'immagine. |
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
La funzione è semplicissima
![]() dst_im Destination image link resource. src_im Source image link resource. Queste prime due sono immediate. dst_x x-coordinate of destination point. dst_y y-coordinate of destination point. Queste due sono le coordinate nell'immagine di destinazione, ovviamente 0,0 in questo caso src_x x-coordinate of source point. src_y y-coordinate of source point. Le coordinate nell'immagine sorgente (in caso di coordinata più grande di 120 saranno (coordinata - 120) / 2), altrimenti 0 in caso di ridimensionamento dst_w Destination width. dst_h Destination height. Questa è la dimensione nell'immagine di destinazione. 120, 120 nel caso di immagine iniziale più grande. - 120,s nel caso di immagine con l'altezza minore di 120 e minore della larghezza. Con s = (120 / w) * h - s, 120 nel caso di immagine con larghezza minore di 120 e minore dell'altezza. Con s = (120 / h) * w src_w Source width. src_h Source height. Questa è la dimensione nell'immagine oriiginale. - 120,120 nel caso di immagine maggiore di 120x120 - la dimensione originale dell'immagine nel caso di una dimensione minore di 120 |
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Aug 2004
Città: Milano
Messaggi: 1310
|
Grazie per l'aiuto, ho cercato di modificare il codice in base alla tua spiegazione, però l'immagine esce ancora sballata.
Questo è il codice: Codice PHP:
|
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Aug 2004
Città: Milano
Messaggi: 1310
|
Sono riuscito a farlo funzionare ora è così:
Codice PHP:
Ultima modifica di Fede 88 : 08-12-2009 alle 18:12. |
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Aug 2004
Città: Milano
Messaggi: 1310
|
Qulacuno saprebbe aiutarmi?
|
![]() |
![]() |
![]() |
#15 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Il succo è: sai programmare in PHP o no ? Hai tutti gli elementi per tirare fuori la funzione con pochi piccoli passaggi.
|
![]() |
![]() |
![]() |
#16 |
Senior Member
Iscritto dal: Aug 2004
Città: Milano
Messaggi: 1310
|
Si, la funzione c'è già tutta e funziona, semplicemente ho postato solo la parte di codice che intendo modificare...
Ora l'unico problema che ho è cambiare il nome dell'immagine che carica l'utente. Per esempio dato che quella che salvo è una miniatura vorrei aggiungere alla fine del nome del file "_thumb" o qualcosa del genere. |
![]() |
![]() |
![]() |
#17 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Prendi il nome del file, lo splitti con explode usando come delimitatore il punto, concateni al penultimo elemento del vettore la stringa "_thumb" e poi passi tutto ad implode.
Il nome è qui: $remote_file = "foto/".$_FILES["image_upload_box"]["name"]; Ultima modifica di cionci : 12-12-2009 alle 14:47. |
![]() |
![]() |
![]() |
#18 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Anzi, più semplice:
$pos = strrpos($remote_file, '.'); ed ottieni la posizione del punto. $remote_file = substr($remote_file, 0, $pos) . "_thumb" . substr($remote_file, $pos); |
![]() |
![]() |
![]() |
#19 |
Senior Member
Iscritto dal: Aug 2004
Città: Milano
Messaggi: 1310
|
Grazie, provo e ti faccio sapere come va!
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:25.