generare thumbnail

  • Creatore Discussione Creatore Discussione claudia
  • Data di inizio Data di inizio

claudia

Utente Attivo
30 Gen 2006
39
0
0
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
Codice:
<?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
Codice:
<?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)
Codice:
<?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">
<img src="ridimensiona.php?Foto=<?php print ("$riga[Foto]");?>">
</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
Codice:
nome_sito/ridimensiona.php?Foto=\fotografie\nome_immagine
mi appare questo messaggio di errore

Codice:
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
La linea 41 è questa:
Codice:
  $img=imagecreatefromjpeg($Foto);
Se invece modifico l'orientamento degli slash
Codice:
nome_sito/ridimensiona.php?Foto=/fotografie/V_TO_00001.jpg
mi dice
Codice:
/fotografie/V_TO_00001.jpg NON ESISTE!

Qualcuno può darmi un consiglio?
 
Ciao!

Allora,
  1. sicuramente le barre "\" non vanno bene. Controlla come le hai memorizzate nel db e in caso sostituiscile con "/";
  2. in questa porzione di codice:
    PHP:
    while($riga=mysql_fetch_array($risultato))
    {?>
    <tr>
    <td colspan="2">
    <img src="ridimensiona.php?Foto=<?php print ("$riga[Foto]");?>">
    </tr>
    } 
    ?>
    manca il tags di apertura php "<?" prima dell'ultima parentesi graffa;
  3. In queste righe:
    PHP:
    $Foto=isset($_GET['Foto']) ? $_GET['Foto'] : ""; 
    if(file_exists($Foto)) 
        ridimensiona($Foto); 
    else 
        echo "$Foto NON ESISTE!";
    dai un altro nome alla variabile $Foto (per esempio $img) in modo che non coincida con il nome dell'argomento assegnato alla funzione "ridimensiona" in fase di dichiarazione;

Con questi accorgimenti dovrebbe andare, o almeno, a me ha funzionato.

CIAU CIAU
 
Ultima modifica:
Ho corretto il codice così come mi hai consigliato....ma non ricordo più come si impostava la query sql per la modifica del contenuto di un campo (devo cambiare l'orientamento delle barre che effettivamente nel DB sono memorizzate "\" ) mi puoi dare un suggerimento? Altrimenti andrò a ricercare tra i miei mille file di prova
Grazie
 
Ma non hai a disposizione un manager di mysql tipo PHPMYADMIN da cui fare le modifiche???

Comunque, la sintassi per modificare il contenuto di un campo è la seguente:

Codice:
UPDATE nome_tabella SET nome_campo = 'nuovo_valore' WHERE eventuale_condizione

CIAU CIAU
 

Discussioni simili