Errore nel creare miniature da immagini caricate su un mio form

Jam1

Nuovo Utente
11 Dic 2011
9
0
0
Ciao a tutti,

Ecco il mio problema.
Vorrei creare una gallery con delle miniature (thumbnails) dalle foto/immagini che i vari utenti possono caricare da un form sul mio sito.

Dopo i controlli sul file caricato, la pagina, alla quale dopo il login (uso le sessioni) ogni singolo utente può accedere, che dovrebbe contenere la gallery con le miniature create 'al volo' con PHP che ho chiamato vision.php non funziona a dovere.

Questa vision.php richiama a sua volta un mio altro script che dovrebbe crearle appunto 'on the fly', ma dove sbaglio evidentemente qualcosa.... Questo script si chiama thumb.php.

Mi sono creato in precedenza una tabella sul mio db MySQL, così:

CREATE TABLE uploaded (id_file INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, url_file VARCHAR(50) NOT NULL, nome_file VARCHAR(100) NOT NULL, tipo_file VARCHAR(20) NOT NULL, descrizione VARCHAR(255), note TEXT, data_inserimento DATETIME NOT NULL, indirizzo_IP CHAR(15) NOT NULL, username VARCHAR(20) NOT NULL, id_user INT(11) NOT NULL, PRIMARY KEY(id_file));


Ora, da vison.php riesco ad estrarre solo i nomi dei files caricati oppure le loro estensioni ma non, come dovrei, le miniature o thumbnails!!!.

In vision.php richiamo le miniature in questo modo:

PHP:
	echo '<img src="thumb.php?id_file=' . $row['id_file'] . '" alt="' . $row['id_file'] . '" /> 
<br /><br /><br />';


e vorrei aggiungere, se può essere utile ora, tutto lo script in questione, ovvero:

PHP:
<?php
	//continuo la sessione
	session_start();

	require_once 'config_db.php'; 	     	
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" lang="it">   
<head>
<?php
	include 'header.html';
?>
 
 <title>Visualizzazione</title>  
</head>

<body class="no-js">
<?php
	require 'sessione_loggati.php';	
?>

<!-- apertura del div centrale --> 
	<div id="centrale">

<?php
	
	try
		{	
			// Report all PHP errors
			error_reporting(-1);
							
			$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
			
			$stmt = $pdo->prepare("SELECT * FROM uploaded WHERE id_user = ? ORDER BY id_file");
	
			// L'utente correttamente loggato cerca un file, uso le sessioni!
			$stmt->execute(array($_SESSION['id_user']));
 	
 			if ( $row = $stmt->fetch(PDO::FETCH_ASSOC) )
 				{ 	
 					// Qui uso un ciclo do/while
 					do
 						{
 							echo '<br /><br />Le tue immagini:' . '&nbsp; &nbsp; <a href="upload.php">Torna indietro</a><br /><br />'; 

							echo '<img src="thumb.php?id_file=' . $row['id_file'] . '" alt="' . $row['id_file'] . '" /> 
<br /><br /><br />';
									 	
 						} 
 													
 					while ( $row = $stmt->fetch(PDO::FETCH_ASSOC) ); 				
 				}
 			else
 				{
 					echo '<br /><br /> <div class="centra">Ciao, ' . $_SESSION['username'] . ', non hai inviato per ora nessuna immagine.
<br /><br /> <a href="upload.php">Inviami un\'immagine, se lo desideri</a></div>';

					include 'footer.php';
					exit;
 				}

		} // fine blocco try {}
	catch (PDOException $e)
		{
			echo "Error!: " . $e->getMessage() . "<br />";
			die;		
		}	
			
?>

<?php
	include 'footer.php';						
?>


mentre ecco il codice di thumb.php:

PHP:
<?php
 	// imposto gli header correttamente per avere una thumbnail SEMPRE in jpeg
	header('Content-type: image/jpeg'); 
	
	//continuo la sessione
	session_start();
	
	require_once 'config_db.php';
	
		
	try
		{
			//chmod("./uploaded/", 0777);
		
			// Report all PHP errors
			error_reporting(-1);
		
			$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 		
			
			// estraggo il nome e l'estensione dell'immagine	
			$stmt = $pdo->prepare("SELECT nome_file, tipo_file FROM uploaded WHERE id_file = ?");
	
			// Passo il parametro della querystring contenuto in vision.php
			$stmt->execute(array($_GET['id_file']));
			
			$row = $stmt->fetch(PDO::FETCH_ASSOC);					

			switch ($row['tipo_file']) 
				{
					case 'png':						
					// estraggo i dati da un'immagine png
					$image = imagecreatefrompng('uploaded/' . $row['nome_file'] . '.' . $row['tipo_file']);
					break;	

					case 'jpg' || 'jpeg': 
					$image = imagecreatefromjpeg('uploaded/' . $row['nome_file'] . '.' . $row['tipo_file']);
                                        
                                     // provo a caricare un'immagine jpeg, ma ottengo un errore che registro sul file error_log di Apache
					error_log("Miniatura NON creata, errore", 0);
					break;
				
					case 'gif':
					$image = imagecreatefromgif('uploaded/' . $row['nome_file'] . '.' . $row['tipo_file']);
					break;	
				
					default:			
					die('Impossibile rilevare il formato dell\'immagine');		
				}				
			
			$width = imagesx($image); // estraggo la width dell'immagine originale
			$height = imagesy($image); // estraggo la height dell'immagine originale
			
			// Definisco una dimensione della thumbnail di 250px, intesa come
			// dimensione del lato maggiore dell'immagine.
			$thumbsize = 250;
	
			// Calcolo ora un coefficiente di proporzione tale per cui il 
			// lato maggiore diventi 250, per farlo basta dividere la
			// dimensione che desidero con la dimensione di ciascuno dei due lati 
			// dell'immagine originale, e scegliere il risultato minore
			// con la funzione min()	
			$perc = min($thumbsize / $width, $thumbsize / $height);
	
			// Ora $perc conterrà il coefficiente che moltiplico 
			// per ciascuno dei lati dell'immagine a dimensione 
			// reale, ottenendo le dimensioni della thumbnail.
			$thumb_width = intval($perc * $width);
			$thumb_height = intval($perc * $height);		
				
			// creo la thumbnail con i nuovi parametri 
			$thumb = imagecreatetruecolor($thumb_width, $thumb_height); 
					
			// infine copio l'immagine originale in questa nuova immagine, cioè nella thumbnail
			// con la funzione specifica per i ridimensionamenti imagecopyresampled()
			imagecopyresampled($thumb, $image, 0, 0, 0, 0, $thumb_width, $thumb_height, $width, $height);
			
			// imposto anche la qualità a 80%, predefinita è a 75%: maggiore è  
			// la qualità che si vuole ottenere maggiore è anche il peso della 
			// della thumbnail e viceversa.
      		            imagejpeg($thumb, NULL, 80);      		
      				
			// distruggo la thumbnail per liberare memoria del server
			imagedestroy($thumb); 
			
		} // fine blocco try {}
	catch (PDOException $e)
		{
			echo "Error!: " . $e->getMessage() . "<br />";
			die;		
		}	

?>



Aggiungo che la cartella uploaded,( quella dove gli utenti caricano le immagini) ha al suo interno le foto/immagini caricate e rinominate correttamente.
Infatti sul db da phpMyAdmin vedo in modo esatto i dati inseriti.
Ripeto che la fase di upload funziona perfettamente, ma non riesco ad ottenere queste thumbnails.

Grazie in anticipo e un saluto a tutti.
Ciao.
 
Discussioni simili
Autore Titolo Forum Risposte Data
G Errore Cannot read property 'childNodes' of undefined per mancanza nodo nel file xml XML 6
A [PHP] ERRORE QUANDO CAMBIO SLUG NEL CMS e REWRITE PHP 6
novello88 Joomla su VPS OVH: non funziona nulla ma nessun errore nel log Server Dedicati e VPS 1
M errore lettura data nel mysql con funzione Where PHP 1
R Errore nel CSS impossibile HTML e CSS 2
felino [Mod_rewrite] Errore nel rewrite Apache 2
L Errore nel passare più valori tra pagine php PHP 10
Shyson Stampa data nel db ma da errore PHP 7
felino Errore nel visualizzare il nome del mese PHP 2
Emix errore nel calcolo PHP 4
D Errore incomprensibile nel codice Javascript 2
valient13 Errore nel echo PHP 2
valient13 errore nel controllo di un numero PHP 20
asevenx errore con l'inserimento dei dati nel database, campi vuoti Classic ASP 1
T errore nel recupero di un campo da db ASP.NET 1
I Errore nel ridimensionamento di una <table> in un <div> HTML e CSS 5
I SQLDatasource errore nel server ASP.NET 0
T Errore nel link "Torna Indietro" [era:Funzione javascript] Javascript 0
T errore asp (inserimento dati nel db) Classic ASP 1
S errore nel compilare una drop down list ASP.NET 0
K Inserimento query Errore 1366 PHP 4
F errore 1062 su campo nuovo MySQL 4
N Errore interno Access MS Access 2
R mi da errore dove inizia il while PHP 1
R Recupero di permalink di un sito che è stato eliminato per errore WordPress 5
R Yoast SEO errore semafori sempre rossi SEO e Posizionamento 0
S Visualizza l'errore di creazione in MSSQL Database 4
simgia Cordova errore quando cerco di emulare o creare la app Sviluppo app per Android 2
P Errore nell'indirizzo degli elementi HTML e CSS 2
Jensen Errore di sintassi con DELETE PHP 3
H Errore su array associativo PHP 1
FDF182 ERRORE 1292 PHP 4
P errore 404 con javascript Javascript 2
felino Windows 7: errore 80072EFE su Windows Update Windows e Software 1
A errore http://datatables.net/tn/7 PHP 4
M Errore visualizzazione meta tag title e description SEO e Posizionamento 1
A Errore durante il salvataggio Photoshop 0
M Errore configurazione motion detection nvr Hikvision DS-7616 IP Cam e Videosorveglianza 0
voldemort [c] Errore di segmentazione (core dump creato) C/C++ 1
T SSD - errore sistema Hardware 2
R Navigare sito con cURL, mi restituisce errore PHP 0
L File CSV con app inventor da errore Sviluppo app per Android 2
A Errore visualizzazione selezione testo Photoshop 0
I Postman 400 Errore di richiesta non valida Programmazione 0
S Errore PHP - Notice: Undefined index ... PHP 14
U Campo vuoto data errore Fatal error: PHP 2
R Errore UPDATE tabella mysql PHP 1
R W10 Segnalazione di errore su terminale USB Windows e Software 0
G non riesco a capire quale sia l'errore [SQL] MySQL 2
I Errore 80040220 nella newsletter con paginazione Classic ASP 0

Discussioni simili