PDA

View Full Version : [php] funzioi php per immagini (non sgridatemi però!!!)


utrecht
17-10-2003, 12:28
Vorrei ridimensionare un immagine grande e ridurla alle dimensioni desiderate.
Ho controllato la configurazione php e risulta che è stato compilato con l'opzione --enable-exif, quindi in base al manuale in linea, sarei in grado di lavorare con le informazioni memorizzate negli header delle immagini JPEG e TIFF.

Ho provato ad utilizzare questa funzione ma mi stampa cose strane......

function resampimagejpg($forcedwidth, $forcedheight)
{
$g_imgcomp=100-$imgcomp;
$g_srcfile="mia_immagine.jpg";
$g_dstfile=$destfile;
$g_fw=$forcedwidth;
$g_fh=$forcedheight;

if(file_exists($g_srcfile))
{
$g_is=getimagesize($g_srcfile);
if(($g_is[0]-$g_fw)>=($g_is[1]-$g_fh))
{
$g_iw=$g_fw;
$g_ih=($g_fw/$g_is[0])*$g_is[1];
}
else
{
$g_ih=$g_fh;
$g_iw=($g_ih/$g_is[1])*$g_is[0];
}
$img_src=imagecreatefromjpeg($g_srcfile);
$img_dst=imagecreate($g_iw,$g_ih);
imagecopyresampled($img_dst, $img_src, 0, 0, 0, 0, $g_iw, $g_ih, $g_is[0], $g_is[1]);
imagejpeg($img_dst, $g_dstfile, $g_imgcomp);
imagedestroy($img_dst);
return true;
}
else
return false;
}
$thb_status = resampimagejpg(65,65);
echo $thb_status;

---
Grazie mille!
Aiutooo, please....:muro:

cionci
18-10-2003, 01:49
Prova a settare il mime type all'inizio del tuo codice:

echo "Content-Type: image/gif\n\r\n\r";

o

echo "Content-Type: image/gif\r\n\r\n";

non mi ricordo mai...

utrecht
20-10-2003, 10:00
Non mi funziona: ottengo errore...
<?
function resampimagejpg($forcedwidth, $forcedheight)
{
$g_imgcomp=100-$imgcomp;
$g_srcfile="mia_immagine.jpg";
$g_dstfile=$destfile;
$g_fw=$forcedwidth;
$g_fh=$forcedheight;

if(file_exists($g_srcfile))
{
$g_is=getimagesize($g_srcfile);
if(($g_is[0]-$g_fw)>=($g_is[1]-$g_fh))
{
$g_iw=$g_fw;
$g_ih=($g_fw/$g_is[0])*$g_is[1];
}
else
{
$g_ih=$g_fh;
$g_iw=($g_ih/$g_is[1])*$g_is[0];
}
$img_src=imagecreatefromjpeg($g_srcfile);
$img_dst=imagecreate($g_iw,$g_ih);
imagecopyresampled($img_dst, $img_src, 0, 0, 0, 0, $g_iw, $g_ih, $g_is[0], $g_is[1]);
imagejpeg($img_dst, $g_dstfile, $g_imgcomp);
imagedestroy($img_dst);
return true;
}
else
return false;
}
$thb_status = resampimagejpg(60,60);
?>
<html>
<head>
<title>Untitled</title>
</head>

<body>
<?
echo "Content-Type: image/gif\r\n\r\n";
echo $thb_status;
?>

</body>
</html>
-------

Per la precisione:
Warning: imagecopyresampled(): requires GD 2.0 or later in /var/www/html/ancona/image.php on line 25
˙Ĝ˙àJFIF˙ŝ Content-Type: image/gif 1

cionci
20-10-2003, 10:12
Lo devi dare in ouput prima di qualsiasi testo !!!

Prova a mettere SOLO questo nella pagina .php:
<?
echo "Content-Type: image/gif\r\n\r\n";

function resampimagejpg($forcedwidth, $forcedheight)
{
$g_imgcomp=100-$imgcomp;
$g_srcfile="mia_immagine.jpg";
$g_dstfile=$destfile;
$g_fw=$forcedwidth;
$g_fh=$forcedheight;

if(file_exists($g_srcfile))
{
$g_is=getimagesize($g_srcfile);
if(($g_is[0]-$g_fw)>=($g_is[1]-$g_fh))
{
$g_iw=$g_fw;
$g_ih=($g_fw/$g_is[0])*$g_is[1];
}
else
{
$g_ih=$g_fh;
$g_iw=($g_ih/$g_is[1])*$g_is[0];
}
$img_src=imagecreatefromjpeg($g_srcfile);
$img_dst=imagecreate($g_iw,$g_ih);
imagecopyresampled($img_dst, $img_src, 0, 0, 0, 0, $g_iw, $g_ih, $g_is[0], $g_is[1]);
imagejpeg($img_dst, $g_dstfile, $g_imgcomp);
imagedestroy($img_dst);
return true;
}
else
return false;
}
$thb_status = resampimagejpg(60,60);
echo $thb_status;
?>

cionci
20-10-2003, 10:27
Ora che riguardo meglio il codice, non serve per ridimensionare un'immagine int empo reale e visualizzarla !!! Serve per ridimensionarla e scriverla su disco !!!

Prova a mettere all'inizio:

$g_dstfile="mia_immagine_piccola.jpg";

e lo vedrai...

utrecht
20-10-2003, 10:46
:( :(
<?
echo "Content-Type: image/gif\r\n\r\n";

function resampimagejpg($forcedwidth, $forcedheight)
{

$g_imgcomp=100-$imgcomp;
$g_srcfile="mia_immagine.jpg";
$g_dstfile="mia_immagine_piccola.jpg";
$g_fw=$forcedwidth;
$g_fh=$forcedheight;

if(file_exists($g_srcfile))
{
$g_is=getimagesize($g_srcfile);
if(($g_is[0]-$g_fw)>=($g_is[1]-$g_fh))
{
$g_iw=$g_fw;
$g_ih=($g_fw/$g_is[0])*$g_is[1];
}
else
{
$g_ih=$g_fh;
$g_iw=($g_ih/$g_is[1])*$g_is[0];
}
$img_src=imagecreatefromjpeg($g_srcfile);
$img_dst=imagecreate($g_iw,$g_ih);
imagecopyresampled($img_dst, $img_src, 0, 0, 0, 0, $g_iw, $g_ih, $g_is[0], $g_is[1]);
imagejpeg($img_dst, $g_dstfile, $g_imgcomp);
imagedestroy($img_dst);
return true;
}
else
return false;
}
$thb_status = resampimagejpg(60,60);
echo $thb_status;
?>
----

quelllo che ottengo:
Content-Type: image/gif
Warning: imagecopyresampled(): requires GD 2.0 or later in /var/www/html/ancona/image.php on line 30
1

cionci
20-10-2003, 11:15
Apri il php.ini e aggiungi il modulo gd2...

utrecht
20-10-2003, 12:26
ehmm... dove lo devo aggiungere?

sorry!!

cionci
20-10-2003, 12:28
Che sistema hai Windows ? Hai messo php.ini in C:\windows ?

utrecht
20-10-2003, 13:18
Win2000....
Il mio problema è in quale punto del mio .ini devo aggiungere una stringa per il modulo gd2...

sempre più :(....

cionci
20-10-2003, 13:43
Ci dovrebbe essere già una riga in cui parla del modulo gd2....basta decommentare quella...

utrecht
20-10-2003, 16:32
L'unica che ho trovato attinente a 'gd' è

;extension=php_gd.dll

Decommento quella? Mi sa che però non è quella giusta...
versione php 4.1.1

cionci
20-10-2003, 19:47
E' quella giusta, ma aggiorna PHP !!! Siamo alla versione 4.3.3 !!!
Lì purtroppo c'è soltanto la libreria gd...magari quelle funzioni che interessano a te sono compatabili con la gd...

utrecht
21-10-2003, 07:39
Superfluo dirlo... grazie mille per la disponibilità!!:)

cionci
21-10-2003, 07:42
Figurati, ma funziona ?

utrecht
21-10-2003, 10:34
Purtroppo niente da fare però è possibile che spostando poi tutto sul server con una versione php più recente, riesca a far girare la mia funzione (spero!).
Al momento sono ancora in fase di test in locale.

cionci
21-10-2003, 13:39
Direi di sì...a me funziona...

sprite1
26-10-2003, 13:59
Ciao, programmo da un po' in PHP e ho sviluppato parecchie cosette con le GD/GD2...
L'unica cosa che vorrei chiederti è questa: a me le immagini ridimensionate con le GD mi vengono abastanza decenti dal punto di vista della qualità dell'immagine....ma con le GD2 mi vengono fuori uno schifo. Alcune sembrano quasi in "negativo", altre dove predomina il verde e il blu....in pratica una "munnezza".
E' normale?

cionci
26-10-2003, 15:50
Sinceramente non sono un esperto di GD2...ma il ridimensionamento fatto sopra funziona benissimo...

Usi imagecreatetruecolor ?

sprite1
27-10-2003, 08:24
non l'ho mai usata...forse è quello il problema? Proverò. Nel frattempo prova a ridimensionare un'immagine JPG con le GD2 e fammi sapere se la miniatura si vede correttamente...

sprite1
27-10-2003, 08:31
Cacchio.....CIONCI.....PROBLEMA RISOLTO.....HO SOSTITUITO IMAGECREATE CON IMAGECREATETRUECOLOR E TUTTO FUNGE ALLA MERAVIGLIA....GRAZIE MILLE, MILLE E MILLE!!!!!

cionci
27-10-2003, 08:41
Bene :)