Newsgroup: it.comp.www.php
Titolo: GD e ridimensionamento immagini

Ciao a tutti,
ho creato una funzione che fa il ridimensionamento in percentuale delle 
immagini (gif o jpg) che gli vengono passate come parametri...
funzione fatta esclusivamente per creare delle thumb da un pannello di 
amministrazione.
al momento la funzione mantiene l'estensione del file orgininale;
le thumb in jpg però non rendono benissimo, quindi ho deciso di creare 
delle thumb GIF anche per le immagini JPG...
secondo voi è possibile?
al momento il codice che sto utilizzando è:
if($fileType == 1){
  $thumb = imagecreatetruecolor($newWidth, $newHeight);
  $source = imagecreatefromgif($fileName);
  imagecopyresized($thumb, $source, 0, 0, 0, 0, $newWidth, $newHeight, 
$width, $height);
  // Output
  imagegif($thumb,$fileNameOut);
}elseif($fileType == 2){
  $thumb = imagecreatetruecolor($newWidth, $newHeight);
  $source = imagecreatefromjpeg($fileName);
  imagecopyresized($thumb, $source, 0, 0, 0, 0, $newWidth, $newHeight, 
$width, $height);
  // Output
  imagejpeg($thumb,$fileNameOut);
}
grazie anticipate!
SLivio


Ho lo stesso problema. Le librerie GD ridimensionandomi il file jpeg ne
alterano completamente i colori, non sembra neanche (ma lo sarà
sicuramente) un problema di compressione jpeg, perché tutta l'immagine
sembra passata sotto un filtro che la sovraespone completamente. La
cosa strana è che non tutte le immagini ridotte sono pessime. Qualcuna
è accettabile (come thumb) mentre altre sono davvero inguardabili.
Io ho sempre pensato che fosse un problema di parametri o proprio di
librerie, ma non ho mai trovato niente (però è vero che non ho
neanche cercato come un dannato).
Bye
giaconet

le GD non supportano il formato GIF, per un motivo di licenze (mi
sembra che gif sia un formato proprietario, o qualcosa del genere).
Al massimo si possono fare in png, ma non so come vengano.
Io avevo sviluppato un ridimensionamento di immagini jpg non in
percentuale, ma proprio passandogli la base. Non ho mai avuto problemi,
vengono belle e nessun colore è sfalsato.
In pratica fissavo la base, in proporzione mi calcolavo l'altezza (in
modo che non venisse distorta) e poi 'tagliavo' dell'altezza giusta.
Se vi serve qualche info in più sono qui... :-)

madleine ha scritto:

Questo è il mio codice, e i thumb risultanti sono completamente a
ca##o, nel senso certe volte vengono bene, altre vengono malissimo.
Anche io ho fissato il width e ridimensiono l'height in proporzione
alla foto orginale.
A differenza di SLivio io ho usato imageCreate invece di
imageCreateTrueColor, proverò, ma anche lui sembra avere gli stessi
problemi :-(
//Creo il thumbnail
$width_th = 100;
$full_size = imageCreateFromJPEG($dest);
$scala = $width_th/imageSX($i); //ricavo il fattore di scala dividendo
100 per la width reale dell'immagine
$height_th = round(imageSY($i)*$scala); //ottengo l'altezza del thumb
moltiplicando l'height reale per il fattore di scala
$thumb = imageCreate($width_th,$height_th);
$result =
imageCopyResized($thumb,$i,0,0,0,0,$width_th,$height_th,imageSX($i),imageSY($i));
Se mi aiutate mi risolvete un problema a cui ho distolto l'attenzione
ma che mi ronza ogni tanto nel cervello... :-)
Bye
giaconet

 
prova ad utilizzare imagecreatetruecolor al posto di imagecreate e 
imagecopyresampled al posto di imagecopyresized
Ciao

 
Sinceramente non mi è chiaro se la thumb creata persiste sul tuo db o Fs 
o se la crei ogni volta al volo e poi viene distrutta.
In ogni caso, io non ho nessun problema di colore, a patto di dargli la 
massima qualità.
Inoltre per il resize uso un piccolo accorgimento che mi sta dando buoni 
risultati:
Evito di fare resize in percentuale ma piuttosto analizzo base e altezza 
dell' immagine. Dopodichè parto facendo il resize dal centro del lato 
più grande in modo tale da avere un resize e ritaglio dell' immagine 
avendo cura di aver preso una porzione centrale della stessa.
Con un resize in percentuale normale, a seconda delle dimensioni dei 
vari lati, uscivano dei Pastrocchi improponibili.
Saluti

lucamax ha scritto:

quoto! Si tratta di metodi un po' più lenti (in realtà molto più
lenti...), ma creano immagini di qualità decisamente superiore.

 Ciao
sei un genio :)
grazie a tutti...