immagine ridimensionata in php che sgrana

helpdesk

Utente Attivo
30 Set 2009
726
0
0
Pesaro
salve ragazzi ho un problema con uno script php ridimensiona l'immagine però la sgrana e non si sa perchè ho calcolato di farla scalare dividendo il suo valore per 5 quindi da 800x600 a 160x120.
Ma la matematica sembra essere in questo caso un opinione poichè sgrana la foto e non riesco proprio a capire perchè :(

PHP:
<?php 
   
if(isset($_POST['invia'])){
    $dbhost = 'localhost'; 
    $dbuser = 'dbuser'; 
    $dbpass = 'pass'; 
    $dbname = 'name'; 
    $connessione = mysql_connect("localhost", "aaaa", "aaa");
    mysql_select_db(creaocom_db, $connessione) ;
    
	$query = mysql_query("SELECT path FROM ric");
    $riga = mysql_fetch_assoc($query);
    $dir = $riga['path']; 
	$Allert="";
	$percorso =$dir;
    $nome_file=basename( $_FILES['Filedata']['name'] );
    if($nome_file !=""){
        $uploadfile = $percorso.$nome_file;
        $sposta=move_uploaded_file( $_FILES['Filedata']['tmp_name'] ,$uploadfile );
        $thumbComp = 100;
		list($width, $height, $type, $attr) = getimagesize($uploadfile);
        $max_w=160;
        $max_h=120;
        $ratio = @min($max_w/$width,$max_h/$height);
		$Allert="ATTENEDERE CARICAMENTO FILE";
        header("Location:http://www.sito.php");
        if ($ratio < 1){
            $thumb = imagecreatetruecolor($max_w,$max_h);
            $source = imagecreatefromjpeg($uploadfile);
            imagecopyresized($thumb, $source, 0, 0, 0, 0,$max_w,$max_h,$width,$height);
            $dir=$percorso."1.jpg";
            imagejpeg($thumb,$dir,$thumbComp)or die("Impossibile salvare la miniatura");
            unlink($uploadfile);
		}else{
            $Allert="CARICAMENTO FILE COMPLETATO!";
			$renome = $percorso."1.jpg";
            //cancello le vacchia 1.jpg
            unlink($renome);
            //e carico la nuova
            $sposta=rename( $uploadfile ,$renome);
			header("Location:http://www.sito.php");
        }
    }else{
        header("Location:http://www.sito.php");
    }
 }
?>
 

helpdesk

Utente Attivo
30 Set 2009
726
0
0
Pesaro
Ragazzi l'ho modificato cosi' è corretto?

PHP:
<?php 
   
if(isset($_POST['invia'])){
    include "SmartImage/SmartImage.class.php";
    $dbhost = 'localhost'; 
    $dbuser = 'user'; 
    $dbpass = 'pass'; 
    $dbname = 'name'; 
    $connessione = mysql_connect("localhost", "user", "pass");
    mysql_select_db(name, $connessione) ;
    
	$query = mysql_query("SELECT path FROM ric");
    $riga = mysql_fetch_assoc($query);
    $dir = $riga['path']; 
	$Allert="";
	$percorso =$dir;
    $nome_file=basename( $_FILES['Filedata']['name'] );
    if($nome_file !=""){
        $uploadfile = $percorso.$nome_file;
        $sposta=move_uploaded_file( $_FILES['Filedata']['tmp_name'] ,$uploadfile );
        $thumbComp = 150;
		$ratio = @min($max_w/$width,$max_h/$height);
		$Allert="ATTENEDERE CARICAMENTO FILE";
        header("Location:http://www.sito.php");
        if ($ratio < 1){
          // qui ho modificato lo script 
		  $dir=$percorso."1.jpg";
		  $img = new SmartImage($dir);
          $img->resize(150, 113);
          $img->saveImage($dir);
         }else{
            $Allert="CARICAMENTO FILE COMPLETATO!";
			$renome = $percorso."1.jpg";
            //cancello le vacchia 1.jpg
            unlink($renome);
            //e carico la nuova
            $sposta=rename( $uploadfile ,$renome);
			header("Location:http://www.sito.php");
        }
    }else{
        header("Location:http://www.sito.php");
    }
 }
?>
 

helpdesk

Utente Attivo
30 Set 2009
726
0
0
Pesaro
Ragazzi ora l'ho modificato semplicemente cosi' e dovrebbe funzionare secondo quel tutorial online utilizzando quella classe.
Invece nulla mi da un sacco di errori, errori che riporterò subito dopo il codice in questo post.
Help me please guys :(

PHP:
<?php 
   
if(isset($_POST['invia'])){
    include "SmartImage.class.php";
    $dbhost = 'localhost'; 
    $dbuser = 'dbuser'; 
    $dbpass = 'pass'; 
    $dbname = 'name'; 
    $connessione = mysql_connect("localhost", "user", "pass");
    mysql_select_db(name, $connessione) ;
    $query = mysql_query("SELECT path FROM ric");
    $riga = mysql_fetch_assoc($query);
    $dir = $riga['path']; 
	$Allert="";
	$percorso =$dir;
    $Allert="ATTENEDERE CARICAMENTO FILE";
   $file = $_FILES["foto"];
    $img = new SmartImage($file["tmp_name"]);
    $img->resize(150, 113, true);
    $img->saveImage("$percorso/1.jpg");
    header("Location:http://www.sito.php");
    }else{
        echo "ERRORE CARICAMENTO";
    
}
		
?>

ERRORI:
Warning: getimagesize() [function.getimagesize]: Filename cannot be empty in /home/dir/domains/sito.com/dir/Vemacar/php/SmartImage.class.php on line 42

Warning: imagesx() expects parameter 1 to be resource, null given in / on /home/dir/domains/sito.com/dir/Vemacar/php/SmartImage.class.php on line 305

Warning: imagesy() expects parameter 1 to be resource, null given in /home/dir/domains/sito.com/dir/Vemacar/php/SmartImage.class.php on line 306

Warning: imagejpeg() expects parameter 1 to be resource, null given in on /home/dir/domains/sito.com/dir/Vemacar/php/SmartImage.class.php line 241

Warning: Cannot modify header information - headers already sent by (output started at /home/dir/domains/sito.com/public_html/Vemacar/php/SmartImage.class.php:42) in /home/creaocom/domains/sito.com/public_html/dir/php/Upload1.php on line 21
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
non conosco quella classe, comunque nel primo script che hai postato in
imagejpeg prova a dargli il valore di qualità 100 (non avendolo messo la compressione è 75)
comunque anche rimpicciolendo le immagini si sgranano sempre un po' (come nell'ingrandimento)
 

helpdesk

Utente Attivo
30 Set 2009
726
0
0
Pesaro
Ciao mitico borgo, grazie per la risposta, sempre disponibile :)
il primo script infatti funziona benissimo solo che me la fa sgranare
il metodo getImagesize non dovrebbe ridimensionare l'immagine tenendo le proporzioni? bhoo
Comunque scusa non ho capito quale parametro devo cambiare? ti riposto lo script così me lo indichi da qua.
PHP:
<?php 
   
if(isset($_POST['invia'])){
    $dbhost = 'localhost'; 
    $dbuser = 'caaa'; 
    $dbpass = 'maaa'; 
    $dbname = 'craaab'; 
    $connessione = mysql_connect("localhost", "craaa", "aaaa");
    mysql_select_db(aaaaa, $connessione) ;
    
	$query = mysql_query("SELECT path FROM ric");
    $riga = mysql_fetch_assoc($query);
    $dir = $riga['path']; 
	$Allert="";
	$percorso =$dir;
    $nome_file=basename( $_FILES['Filedata']['name'] );
    if($nome_file !=""){
        $uploadfile = $percorso.$nome_file;
        $sposta=move_uploaded_file( $_FILES['Filedata']['tmp_name'] ,$uploadfile );
        $thumbComp = 100;
		$max_w=150;
        $max_h=113;
		list($width, $height, $type, $attr) = getimagesize($uploadfile);
        $ratio = @min($max_w/$width,$max_h/$height);
		$Allert="ATTENEDERE CARICAMENTO FILE";
        header("Location:http://www.sito.php");
        if ($ratio < 1){
            $thumb = imagecreatetruecolor($max_w,$max_h);
            $source = imagecreatefromjpeg($uploadfile);
            imagecopyresized($thumb, $source, 0, 0, 0, 0,$max_w,$max_h,$width,$height);
            $dir=$percorso."1.jpg";
            imagejpeg($thumb,$dir,$thumbComp)or die("Impossibile salvare la miniatura");
            unlink($uploadfile);
		}else{
            $Allert="CARICAMENTO FILE COMPLETATO!";
			$renome = $percorso."1.jpg";
            //cancello le vacchia 1.jpg
            unlink($renome);
            //e carico la nuova
            $sposta=rename( $uploadfile ,$renome);
			header("Location:http://www.sito.php");
        }
    }else{
        header("Location:http://www.sito.php");
    }
 }
?>
 

helpdesk

Utente Attivo
30 Set 2009
726
0
0
Pesaro
ho capito no non funziona prende il valore da: $thumbComp = 100; e la compressione dovrebbe essere 100 ma sgrana comunque :(
 

helpdesk

Utente Attivo
30 Set 2009
726
0
0
Pesaro
Grazie, si ho letto se ho ben capito nella guida dichiara qua il valore poichè come mi dicevi tu di default è 75
imagejpeg($im, NULL, 75);

nel codice che ho io invece lo prende con la variabile thumbComp che è a 100 quindi la compressione è massima.
Ma si vede sempre sgranata ed è stranissimo :O
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
non so se dipenda da php, ma l'unica è provare.
con gimp o photosh perova a ridurre una tua immagine con le proporzioni che vuoi e la guardi.
se viene sgranata non è colpa di php ma come ti ho detto della riduzione.
 

helpdesk

Utente Attivo
30 Set 2009
726
0
0
Pesaro
Si l'ho pensato anche io ho provato e con photoshop viene bene e se arico quella riompicciolita in photoshop me la carica anche nitida quindi purtroppo è php proprio e non capisco perchè :(
non c'è un modo per ridimensionarla in proporzione come con actionscript? esempio del 20%?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
certo che puoi ridurla con percentuale
PHP:
<?php
//.....
$percento_rid=0.2;// 20/100
list($width, $height, $type, $attr) = getimagesize($uploadfile);
        $max_w=(int)($width*$percento_rid);
        $max_h=(int)($height*$percento_rid);
        //$ratio = @min($max_w/$width,$max_h/$height);
        $Allert="ATTENEDERE CARICAMENTO FILE";
//....
?>

p.s.
in un post precedente hai detto
....il metodo getImagesize non dovrebbe ridimensionare....
no, legge i dati dell'immagine tra cui la larghezza e l'altezza in px
 

helpdesk

Utente Attivo
30 Set 2009
726
0
0
Pesaro
grazie mille anche per la spiegazione, funziona, ridimensiona in percentuale la sgrana meno ma la sgrana ugualmente che disdetta :(
 

valer

Nuovo Utente
12 Lug 2012
11
0
0
io per ridimensionare le immagini da servere con php uso questo

PHP:
copy($_FILES['foto']['tmp_name'], $foto);
list($width, $height, $type, $attr) = getimagesize($foto); // Ottengo le informazioni sull'immagine originale
$a=150/($width/$height); //creo il rapporto di proporzione dell'immagine originale 150 pixel width (cambiala come vuoi)
		
// Creo la versione 150 width con altezza in proporzione thumb=miniatura
$thumb = imagecreatetruecolor(150, $a);
$source = imagecreatefromjpeg($foto);
imagecopyresized($thumb, $source, 0, 0, 0, 0, 150, $a, $width, $height);
imagejpeg($thumb, $foto, 95);// Salvo l'immagine ridimensionata con 95 qualità compressione

ha sempre funzionato senza sgranare
 
Discussioni simili
Autore Titolo Forum Risposte Data
A Salvare immagine ridimensionata in MySql con GD PHP 12
F Aiuto! cambio immagine di sfondo al cambio pagina HTML e CSS 2
gara1 inserire immagine di sfondo in canvas Javascript 0
T Dividere un'immagine in 3 parti orizzontali e salvarle separatamente Photoshop 2
W Immagine come maschera photoshop Photoshop 1
L Ultima immagine Windows e Software 0
A Immagine decentrata con sfondo trasparente Photoshop 0
A Scontornare immagine di bassa qualità. Photoshop 2
B Selezionare un'immagine e salvare la selezione Photoshop 3
F Immagine come fosse selezione attiva Photoshop 1
Y Percorso assoluto file immagine HTML e CSS 9
K Come posso usare un'immagine al posto di un bottone? HTML e CSS 2
M Upload immagine con javascript problemi con FormData() Javascript 1
M Visulizzare immagine con php PHP 8
Stex1967 Salvare una immagine che si trova su porta TCP 8080 di altro sito PHP 7
L Come caricare un'immagine in Canvas dinamicamente Javascript 0
R Cambiare il nome dell'immagine dopo caricamento ftp HTML e CSS 0
L salvare una immagine elaborata in canvas Javascript 1
L salvare una immagine elaborata in canvas Javascript 1
Y Come caricare e visualizzare un'immagine PHP 0
S Testo scrolla su immagine che cambia HTML e CSS 0
M Quando ha l'immagine ingrandita è possibile fare rotazione per ritagliare? Photoshop 0
R Caricamento immagine su cartella remota + mysql PHP 3
R Non riesco a rinnovare l'immagine di sfondo PHP 1
R Non riesco a cambiare l'immagine di sfondo PHP 4
L Upload di un'immagine all'interno di un database usando php PHP 6
G Modifica immagine di sfondo attraverso un bottone PHP 18
F photoshop portable : spostamento immagine Photoshop 0
A Server Apache immagine not found (ERROR 404) Apache 5
P [Photoshop] ritagliare una immagine Photoshop 1
S [PHP] Recupero nome immagine da Form con input file PHP 3
D [Javascript] salvare immagine canvas - paypal Javascript 0
D [HTML] Inviare un link contenente un' immagine HTML e CSS 4
M [PHP] Cercare l'ultima immagine caricata in una cartella datata PHP 15
C [Photoshop] bordi tondi come posso fare per ottenerli come nell'immagine allegata Photoshop 2
M [HTML] Tasto condivisione social e immagine HTML e CSS 2
R [HTML] Effetto carousel di testo su immagine fissa HTML e CSS 2
L [HTML] problema sfondo tutto schermo con immagine HTML e CSS 1
A Php variabile immagine inesistente PHP 4
R [PHP] Testo su immagine al passaggio del mouse PHP 2
L [PHP] controllo dimensione immagine per il resize PHP 2
felino [Wordpress] Immagine di sfondo (sotto il template) WordPress 8
Shyson [HTML] Sovrapporre un'immagine su un'altra HTML e CSS 2
A [PHP] Segnalazione in up-load immagine PHP 2
C [PHP] Scrivere testo su immagine PHP 3
E [HTML] Allineamento immagine agli angoli inferiori di un div HTML e CSS 12
A [WordPress] Link multiplo su immagine WordPress 9
I [Photoshop] Come realizzare immagine tonalità di grigio Photoshop 0
edittaruocco [Photoshop] Immagine in editor grafico Photoshop 0
I Effetto glowing su immagine con GIMP Webdesign e Grafica 0

Discussioni simili