- Home
- Categorie
- Coding e Sistemistica
- PHP
- generare thumbnail
-
generare thumbnail
Non riesco proprio a risolvere questo problema.
Ho un db mysql con un campo Foto nel quale viene salvato il percorso delle immagini contenute in una cartella dal nome fotografie...ora quello che vorrei è che nella visualizzazione dei risultati delle queryes che l'utente compie sul db l'immagine apparisse ridimensionata e non nelle dimensioni originali (esagerate !!!).
Leggendo qua e in là ho provato ad applicare un pò di codice...ma niente.
Vi posto le pagine:
config.php<?php $db_host=""; $db_user=""; $db_password=""; $db_database=""; $connessione=mysql_connect($db_host,$db_user,$db_password) or die ("Errore nella connessione al Mysql:" . mysql_error()); mysql_select_db($db_database,$connessione) or die ("Errore nella selezione del db:" . mysql_error()); $larghezza=200; $altezza=200; $proporzioni=1; $qualità=100; $nomefileridimensiona="ridimensiona.php"; ?>
ridimensiona.php
<?php $db_host=""; $db_user=""; $db_password=""; $db_database=""; $connessione=mysql_connect($db_host,$db_user,$db_password) or die ("Errore nella connessione al Mysql:" . mysql_error()); mysql_select_db($db_database,$connessione) or die ("Errore nella selezione del db:" . mysql_error()); require_once("config.php"); define("LARGHEZZA",$larghezza); define("ALTEZZA",$altezza); define("PROPORZIONI",$proporzioni); define("QUALITA",$qualità); function ridimensiona($Foto) { $header=array(1=>"gif",2=>"jpeg",3=>"png",4=>"jpg"); // RIDIMENSIONAMENTO DELLA FOTO $dimensioni=getimagesize($Foto); if ($dimensioni[2] == 1) $img=imagecreatefromgif($Foto); if (($dimensioni[2] == 2) || $dimensioni[2] == 4) $img=imagecreatefromjpeg($Foto); elseif ($dimensioni[2] == 3) $img=imagecreatefrompng($Foto); $altezza=(PROPORZIONI) ? ceil($dimensioni[1]/$dimensioni[0]*LARGHEZZA) : ALTEZZA; $im=Imagecreatetruecolor(LARGHEZZA, $altezza); imagecopyresampled($im,$img,0,0, 0,0, LARGHEZZA,$altezza, $dimensioni[0],$dimensioni[1]); header("content-type: image/".$header[$dimensioni[2]]); imagejpeg($im,"",QUALITA); imagedestroy($im); } $Foto=isset($_GET['Foto']) ? $_GET['Foto'] : ""; if(file_exists($Foto)) ridimensiona($Foto); else echo "$Foto NON ESISTE!"; ?>
pagina con query di ricerca (nella quale l'immagine dovrebbe vedersi ridimensionata)```
<?php
$db_host="";
$db_user="";
$db_password="";
$db_database="";
$connessione=mysql_connect($db_host,$db_user,$db_password) or die ("Errore nella connessione al Mysql:" . mysql_error());
mysql_select_db($db_database,$connessione) or die ("Errore nella selezione del db:" . mysql_error());$query="SELECT Foto FROM fotoaereeverticali WHERE AnnoRipresa LIKE '%$_POST[AnnoRipresa]%''";
$risultato=mysql_query($query,$connessione) or die ("Errore nella query:" . mysql_error());
while($riga=mysql_fetch_array($risultato))
{?>
<tr>
<td colspan="2">
![image](ridimensiona.php?Foto=<?php print ()">
</tr>
}
?>Il risultato che ottengo è la classica iconcina con la x rossa, ma sulle proprietà mi da Indirizzo(URL)= nome_sito/ridimensiona.php?Foto=\fotografie\nome_immagine se provo a chiamare direttamente nell'indirizzo del browser ``` nome_sito/ridimensiona.php?Foto=\fotografie\nome_immagine ``` mi appare questo messaggio di errore
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 2848 bytes) in /home/mhd-01/www.space2place.org/htdocs/ridimensiona.php on line 41
$img=imagecreatefromjpeg($Foto);
Se invece modifico l'orientamento degli slash
nome_sito/ridimensiona.php?Foto=/fotografie/V_TO_00001.jpg
mi dice
/fotografie/V_TO_00001.jpg NON ESISTE!
Qualcuno può darmi un consiglio?
-
Ciao.
Il codice che hai scritto mi semrba corretto.
A sto punto penso che il problema sia:
- non hai le gd installate
- hai un problema nel db.
Per il primo caso:
crea un file e dentro mettici solo:<?php
echo phpinfo();
?>dovresti avere nella pagina uan riga tipo:
GD Support enabledse non ce l'hai devi installare le gdlib.
Visto che ci sei, nel rigo sotto c'è stampata la versione delle gd (GD Version ).
Se sono invece installate, se sostituisci
![image](ridimensiona.php?Foto=<?php print ()"> con
![image](<?php print ()"> ti stampa le foto non ridimensionate?
-
Non credo di avere un problema nel Db, infatti ho sempre visualizzato perfettamente le immagini, solo ora che ho deciso di provare a creare thumbnail non me le stampa.
Ho provato a lanciare il file phphinfo.php ma non nessuna riga che faccia riferimento alle GD
-
phpinfo.php?
Cos'è?
BTW se hai fatto come ti ho detto il problema è che non hai le gd installate.
-
[url=http://www.senamion.it/2006/06/25/php-errore-con-immagini-di-grandi-dimensioni-imagecreatefromjpeg/]Qua parla dell'errore con immagini grosse per imageCreateFromJpeg
-
Prova a inserire nello script di ridimensionamento questo cdoice iniziale
ini_set("memory_limit", "24M");
e rimetti gli slash com'erano inizialmente, facci sapere!
-
Ho provato a fare tutto quello che mi avete suggerito ma continua a non farmi vedere l'immagine ridimensionata e dire ```
/fotografie/V_TO_00001.jpg NON ESISTE!
-
Scusami se insisto:
puoi creare un file chiamandolo prova.php e metterci dentro questo codice?
<php
echo phpinfo();
?>
Una volta fatto caricalo con l'ftp e leggi cosa dice.
TRa le tante cose deve starci una parte dedicata alle gd.
E deve starci una riga con scritto
Gd support.Cosa dice ? Enable o disable?
Così, tanto per scrupolo.
-
L'ho fatto....e in relazione alle GD mi dice
GD Support enabled GD Version bundled (2.0.28 compatible) FreeType Support enabled FreeType Linkage with freetype GIF Read Support enabled GIF Create Support enabled JPG Support enabled PNG Support enabled WBMP Support enabled XBM Support enabled
-
Ok.
Quanto son grandi ste immagini che vuoi ridimensionare?
Quante ne ridimensioni ogni volta?
-
Beh, io penso che adesso il problema sia diverso. Il fatal error non esce più, l'errore dunque è da ricercare nel percorso del file, non so magari prova invece che con il percorso locale con quello della rete(http://...) se lo script non trova il file non è di certo problema di gd o di memoria insufficiente!
-
non è che per caso usi l'url rewriting e quindi ti "incasini" con i percorsi?
anche se l'url viene riscritto poi devi avere il percorso di riferimento corretto e la gd non vuole un percorso di tipo http ma "fisico".