|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Sep 2006
Messaggi: 10
|
php e immagini
Dopo aver creato una tabella con la seguente query:
create table file_upload (id int(11) UNSIGNED NOT NULL auto_increment, bin_data blob, filename varchar(150) default NULL , filesize varchar(50) default NULL, filetype varchar(50) default NULL, width int(4) default NULL, height int(4) default NULL , thumb mediumblob NOT NULL, PRIMARY KEY (id)) TYPE=MyISAM; Immetto in essa le immagini e le relative informazioni richieste dai campi con i seguenti due script: upload.htm <html> <head> <title>PHP Professionale</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <form name="formUpload" enctype="multipart/form-data" method="post" action="upload02.php"> <p> <input name="fileUP" type="file" id="fileUP"> </p> <p> <input type="submit" name="Submit" value="Invia"> </p> </form> </body> </html> il quale una volta immesso l'indirizzo dell' immagine e cliccato sul pulsante invia mi mostra in una nuova pagina chiamata upload2.php l'anteprima dell'immagine e carica i dati sul DB : upload02.php : <?php // se riceviamo i dati dal form if ($_SERVER['REQUEST_METHOD'] == 'POST' && $_FILES['fileUP'] ['size'] > 0 ) $fileName = $_FILES['fileUP']['name']; $tmpName = $_FILES['fileUP']['tmp_name']; $fileSize = $_FILES['fileUP']['size']; $fileMimeSize = $_FILES['fileUP']['type']; // Ricaviamo le informazioni sull'immagine list($width,$height,$type,$attr) = getimagesize( $_FILES['fileUP']['tmp_name']); // controlliamo che il lato maggiore dell'immagine non superi i 640 pixel if(($width > 640 ) || ($height > 640)) {$msg = "<p>Immagine di dimensione superiori al consentito<</p>";} // in base al tipo di immagine creiamo un tipo temporanea del tipo corretto switch ($type){ case 1: // gif $img_in=imagecreatefromgif($tmpName) or die ("impossibile creare l'immagine"); if(!isset($extension)) {$extension = "jpg";} break; case 2: // jpg $img_in=imagecreatefromjpeg($tmpName) or die ("impossibile creare l'immagine"); if(!isset($extension)) {$extension = "jpg";} break; case 3: // png $img_in=imagecreatefrompng($tmpName) or die ("impossibile creare l'immagine"); if(!isset($extension)) {$extension = "png";} break; default: die("impossibile creare l'immagine"); } // Calcoliamo la percentuale di ridimensionamento in base alle dimensioni finali desederate $thumb_max_width = 100; $thumb_max_height = 100; $percentuale = ($width > $height) ? $thumb_max_width / $width: $thumb_max_height / $height; $th_width = $width * $percentuale; $th_height = $height * $percentuale; $img_new = imagecreatetruecolor($th_width,$th_height); imagecopyresampled($img_new,$img_in,0,0,0,0,$th_wi dth,$th_height,$width,$height); if($fileSize > 64000) { die ("dimensione in KB dell'immagine superiore al consentito."); } // prepariamo i dati per l'inserimento in MYSQL ob_start(); // creiamo il thumbnail in formato in jpeg imagejpeg($img_new); $thumbTemp = ob_get_contents(); $thumbnail = addslashes($thumbTemp); ob_end_clean(); $immagine = addslashes(fread(fopen($tmpName, "r"), $fileSize)); // apriamo la connessione al database $db_host =""; $db_user = ""; $db_name = ""; $db_password = ""; $connection = mysql_connect($db_host,$db_user,$db_password) or die ("Impossibile connettersi al server MySQL.\n"); mysql_select_db($db_name,$connection) or die ("Impossibile aprire il database.\n"); // inseriamo i dati nella tabella $sql = "INSERT INTO file_upload (bin_data, filename , filesize , filetype, width , height , thumb) VALUES ('$immagine' , '$fileName' , '$fileSize' , '$extension' , $width , $height ,'$thumbnail')"; $sql_result = mysql_query($sql,$connection) or die (mysql_error()); $id = mysql_insert_id(); // chiudiamo la commessione mysql_close($connection); // a seconda del tipo di immagine inviamo al browser l'header corretto switch($extension) { case "gif": header("content-type:image/gif"); imagejpeg($img_new); exit; case "jpg": header("content_type:image/jpeg"); imagejpeg($img_new); exit; case "png": header("content_type:image/png"); imagepng($img_new); exit; default: die ("impossibile visualizzare l'immagine"); } ?> fino a qui tutto bene, i dolori incominciano ora, perchè quando clicco sul file visualizza.php mi compare una tabellina di sfondo grigio chiaro che dovrebbe mostrarmi le immagini in miniatura e una volta cliccato sulle immagini in miniatura dovrebbero apparire le immagini in una finestra di grandezza preimpostate, ma invece mi compare solo la tabellina con al posto delle immagini delle x e quando clicco su di esse si apre una finestra nera di dimensioni preimpostate ma con al posto della immagine grande una x nell'angolo superiore sinistro: visualizza.php: <html> <head> <title></title> <script language="JavaScript"> /* funzione javascript per aprire le immagini in una nuova finestra di dimensione prefissata */ function openImg(id,imgW,imgH) { var winWidth = eval(imgW) + 20; var winHeight = eval(imgH) + 20; var features = "width=" + winWidth + ",height=" + winHeight+""; copWindow = window.open("","PHP",features); copWindow.document.write("<html>\n<head><title>PHP professionale </title></head>\n"); copWindow.document.write("<body bgcolor='#000000'>\n"); copWindow.document.write("<a href='javascript:window.close();'>"); copWindow.document.write("<img src='/immagine.php?id="+id+"'width='"+imgW+"'height='"+i mgH+"' border='0' title='clicca per chiudere'></a>\n"); copWindow.document.write("</body>\n</html>"); } </script> </head> <body> <?php // connessione al database $db_host = ""; $db_user = ""; $db_password = ""; $db_name = ""; $connection = mysql_connect($db_host,$db_user,$db_password) or die ("Impossibile connettersi al server Mysql.\n"); mysql_select_db($db_name,$connection) or die ("Impossibile aprire il database.\n"); $sql = "SELECT id,filename,filetype,width,height FROM file_upload ORDER BY id"; $sql_result = mysql_query($sql,$connection) or die (mysql_error()); $tot = mysql_num_rows($sql_result); print "<p> </p><table border='0' align='center' cellpadding='5' cellspacing='1' bgcolor='#CCCCCC'>\n"; $i=0; while($ValoriRiga=mysql_fetch_array($sql_result)) { $id=$ValoriRiga["id"]; $filename=$ValoriRiga["filename"]; $width=$ValoriRiga["width"]; $height=$ValoriRiga["height"]; if($i==0 || $i%4 ==0) { echo "</tr valign=\"top\">\n"; } print "<td align='center' valign='middle'> <a href=\"javascriptpenImg('$id','$width','$height' )\"> <img src='thumb.php?id=$id' title='clicca per ingrancire' border='0'> </a></td>\n"; if($i > 0 && $i % 4 == 3){ echo "</tr>\n"; } $i++; } for($j=0 ; $j < $tot % 4; $j++){ echo " <td> </td>\n"; } if($tot-4 >0 ){ echo "</tr>\n"; } print "</table>"; mysql_free_result($sql_result); mysql_close($connection); ?> i seguenti file thumb.php e immagine.php servono a visualizza per visualizzare prima le anteprime nella tabella (thumb.php) e poi l'immagine nella finestra di dimensioni preimpostate (immagine.php) thumb.php: <?php $db_host =""; $db_user =""; $db_password =""; $db_name =""; $connection = mysql_connect($db_host,$db_user,$db_password) or die ("Impossibile connettersi al server Mysql.\n"); mysql_select_db($db_name,$connection) or die ("Impossibile aprire il database.\n"); // dopo essersi connessi al database, recupera i dati del thumbnail dell'immagine identificata dall'id passato come parametro nell'URL $sql="SELECT thumb FROM file_upload WHERE id=".$_GET['id'].""; $result=mysql_query($sql) or die ("Error " . mysql_errno() . " : " . mysql_error()); mysql_close($connection); $riga=mysql_fetch_row($result); // il thumbnail è salvato in formato JPEG , quindi impostiamo il content/type appropriato nell'header della risposta HTTP header("Content-type:image/jpeg"); print $riga[0]; exit; ?> immagine.php: <?php $db_host = ""; $db_user = ""; $db_password = ""; $db_name = ""; $connection=mysql_connect($db_host,$db_user,$db_pa ssword) or die ("Impossibile connettersi al server Mysql.\n"); mysql_select_db($db_name,$connection) or die ("Impossibile aprire il database.\n"); // dopo essersi connessi al database, recupera i dati del thumbnail dell'immagine identificata dall'id passato come parametro nell'URL $sql="SELECT bin_data , filename, filetype FROM file_upload WHERE id=". $_GET['id'] . ""; $result=mysql_query($sql) or die ("Error " . mysql_errno() . " : " . mysql_error()); mysql_close($connection); $riga=mysql_fetch_row($result); // a seconda del tipo di immagine impostiamo il content type switch ($riga[2]) { case "gif": header("Content-type:image/gif"); // con questa istruzione impostiamo il nome del file header("Content-Disposition: inline; filename=$riga[1];"); print $riga[0]; exit; case "jpg": header("Content-type:image/jpeg"); header("Content-Disposition: inline; filename=$riga[1];"); print $riga[0]; exit; case "png": header("Content-type:image/png"); header("Content-Disposition: inline; filename=$riga[1];"); print $riga[0]; exit; default: die ("Impossibile visualizzare l'immagine"); } ?> c'e qualcuno che puo aiutarmi a visualizzare queste benedette immagini , sono giorni che cerco una soluzione , credo che l'errore sia in questa riga di codice del file Visualizza.php: print "<td align='center' valign='middle'> <a href=\"javascript:openImg('$id','$width','$height' )\"> <img src='thumb.php?id=$id' title='clicca per ingrancire' border='0'> </a></td>\n"; grazie in anticipo per qualsiasi suggerimento. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:40.