Problema con il ridimensionamento

giovanni_fanta

Nuovo Utente
17 Nov 2011
13
0
0
Seguendo questa guida https://www.mrw.it/php/articoli/galleria-immagini-php-gd2-mysql_828.html vorrei salvare le miniature un po piu grandi. ho provato a cambiare tutti i valori nel file function.php
PHP:
<?php
function makeThumb($dir,$pic,$n,$t){
  @list($width, $height, $type, $attr) = @getimagesize($pic);
  $max_w = 100;
  $max_h = 100;
  $ratio = @min($max_w/$width,$max_h/$height);

  // Verifico che l'immagine originale sia più grande delle dimensioni massime 100*100pxl
  if ($ratio < 1){
    // Individuo le nuove dimensioni da assegnare all'immagine
    $w = @floor($ratio*$width);
    $h = @floor($ratio*$height);

    // creo una nuova immagine con le dimensioni appena calcolate
    $thumb = @imagecreatetruecolor($w,$h);
    if ($t == 'image/jpeg'){$temp = @imagecreatefromjpeg($pic);}
    elseif ($t == 'image/gif'){$temp = @imagecreatefromgif($pic);}
    elseif ($t == 'image/png'){$temp = @imagecreatefrompng($pic);}

    // ridimensiono l'originale e salvo nella cartella di destinazione
    @imagecopyresized($thumb,$temp,0,0,0,0,$w,$h,$width,$height);
    if ($t == 'image/jpeg'){@imagejpeg($thumb,"$dir/tb_".$n, 75);}
    elseif ($t == 'image/gif'){@imagegif($thumb,"$dir/tb_".$n, 75);}
    elseif ($t == 'image/png'){@imagepng($thumb,"$dir/tb_".$n, 75);}
  }
}
?>

Ma non mi fa ingrandire l'immagine....
Quindi ho provato io a fare uno script
PHP:
<?php
function makeThumb($dir,$pic,$n,$t){
  @list($width, $height, $type, $attr) = @getimagesize($pic);
  $thumb = imagecreatetruecolor(160, 340);
$source = imagecreatefromjpeg($pic);
imagecopyresized($thumb, $source, 0, 0, 0, 0, 160, 340, $width, $height);
imagejpeg($thumb,"$dir/tb_".$n ,75);
}
?>

Pero quando si salva l'immagine mi da sempre quelle misure, come posso fare per averle piu grandi?
P.S. per constatare se sono piu piccole o piu grandi sono andato direttamente ad aprirle cliccando sul file
 
ciao
non so se ho capiyto bene, ma wuoi fare le tumb più grendi? se è cosi devi variare

$max_w = 100;
$max_h = 100;

es. in
$max_w = 200;
$max_h = 200;

dimenticavo:
nella
elseif ($t == 'image/gif'){@imagegif($thumb,"$dir/tb_".$n, 75);}
c'è un erroretto, correggi in
elseif ($t == 'image/gif'){@imagegif($thumb,"$dir/tb_".$n);}
 
Ultima modifica:
Mmmm mi dispiace ma come hai detto tu non, va, mi da sempre la stessa dimensione ecco il codice come mi hai detto tu di modificare

PHP:
<?php 
function makeThumb($dir,$pic,$n,$t){ 
  @list($width, $height, $type, $attr) = @getimagesize($pic); 
  $max_w = 200; 
  $max_h = 200; 
  $ratio = @min($max_w/$width,$max_h/$height); 

  // Verifico che l'immagine originale sia più grande delle dimensioni massime 100*100pxl 
  if ($ratio < 1){ 
    // Individuo le nuove dimensioni da assegnare all'immagine 
    $w = @floor($ratio*$width); 
    $h = @floor($ratio*$height); 

    // creo una nuova immagine con le dimensioni appena calcolate 
    $thumb = @imagecreatetruecolor($w,$h); 
    if ($t == 'image/jpeg'){$temp = @imagecreatefromjpeg($pic);} 
    elseif ($t == 'image/gif'){$temp = @imagecreatefromgif($pic);} 
    elseif ($t == 'image/png'){$temp = @imagecreatefrompng($pic);} 

    // ridimensiono l'originale e salvo nella cartella di destinazione 
    @imagecopyresized($thumb,$temp,0,0,0,0,$w,$h,$width,$height); 
    if ($t == 'image/jpeg'){@imagejpeg($thumb,"$dir/tb_".$n, 75);} 
    elseif ($t == 'image/gif'){@imagegif($thumb,"$dir/tb_".$n);}
    elseif ($t == 'image/png'){@imagepng($thumb,"$dir/tb_".$n, 75);} 
  } 
} 
?>
 
ciao
strano, io avevo usato tempo fa
$max_w = 150; //e anche altri valori
$max_h = 150;
e funzionava.
prova a mettere dei var_dump e posta i risultati

PHP:
<?php  
function makeThumb($dir,$pic,$n,$t){  
  @list($width, $height, $type, $attr) = @getimagesize($pic);
  var_dump($width);
  var_dump($height);
  $max_w = 200;  
  $max_h = 200;  
  $ratio = @min($max_w/$width,$max_h/$height);
   var_dump($ratio);
  // Verifico che l'immagine originale sia più grande delle dimensioni massime 100*100pxl  
  if ($ratio < 1){
    // Individuo le nuove dimensioni da assegnare all'immagine  
    $w = @floor($ratio*$width);  
    $h = @floor($ratio*$height); 
	var_dump($w);
	var_dump($h);
//ecc....
?>
poi prova con un'immagine es. jpg di cui conosci le dimensioni (> di 200x200px) e con carta e penna calcolati quello che dovrebbe risultare, provi a inseririla e guara di var_dump,
il calcolo (salvo errori di approssimazione) dovrebbe essere uguale al risultato dei var_dump.

p.s.
piccolo dubbio: hai le librerie gd attive?

dimenticavo: prova a togliere i silent per vedere se ti da qualche errore
 
Il fatto dei var mi da questo: int(528) int(720) float(0.27777777777778) float(146) float(200)
quindi in teoria la miniatura deve essere di 146x200 pero misurandola (con il programma Meazure) la miniatura risulta 75x100.... Ho provato anche a scaricarla sul pc per paura che lo zoom del browers aveva manomesso le misure ma è sempre 75x100.
Le librerie sono attive
 
ciao
scusa prima mi ero dimenticato di chiederlo: a quanti px ai settato le due variabili
$max_w
$max_h
?
scusa mi era sfuggito VISTO
 
Ultima modifica:
ciao
per sicurezza ho riprovato tutto lo script.
per comodità di calcolo ho lasciato la prima volta
$max_w = 100;
$max_h = 100;
ho caricato una .jpg (barche.jpg) da 792x516 px
poi con esplora risorse sono andato nella cartella e ho trovato (come deve essere), oltre l'originale, la
tb_barche.jpg da 100x65 px
poi ho settato
$max_w = 200;
$max_h = 200;
ricaricata la stessa foto (con nome diverso barche_01.jpg) e ho trovato la tumb
tb_barche_01.jpg da 200x130 px

sei sicuro di guardare bene le misure?

p.s.
per essere ancora più sicuro le ho richiamata in una pag htm e tutto è ok
 
ora go capito lo sbaglio, se carico immagini 528x700 rimane cosi, invece se metto immagini 700x580 me lo fa cambiare le dimmensioni, per ovviare a questo problema come potrei fare?
Comunque grazie mille del tuo aiuto
 
ciao
...se carico immagini 528x700 rimane cosi, invece se metto immagini 700x580 me lo fa cambiare le dimmensioni...
scusa ma non capisco cosa vuoi dire
se carichi un'immagine 700x528 px ti da una tumb da 200x146
se carichi un'immagine 528x700 px ti da una tumb da 146x200

cioè $max_w e $max_h fanno in modo che la misura maggiore rientri nel valore settato mantenendo sempre le proporzioni dell'immagine
 
se carico una immagine ad esempio 530x700 posso dare qualsiasi valore a $max_w e $max_h, la miniatura sarà sempre 72x105
 
ciao
se carico una immagine ad esempio 530x700 posso dare qualsiasi valore a $max_w e $max_h, la miniatura sarà sempre 72x105
svuoti la cahe? perchè non capisco, sto usando lo script che stai usando tu
caricando un'immagine da 530x700px
con
$max_w = 100;
$max_h = 100;
ottengo una tumb 75x100
con
$max_w = 150;
$max_h = 150;
ottengo una tumb 113x150
con
$max_w = 200;
$max_h = 200;
ottengo una tumb 151x200
 
Sono stato tutta la giornata a fare le prove.... lo script va pero alcune immagini me le ridimensiona in un modo e altre immagini me le ridimensiona in un altro modo... ho fatto tutte queste prove con immagini jpeg con dimensioni 720x540.... Mah mistero!!!
P.S. comunque mi sono sbagliato io... non centra nulla se sono in verticale o orizzontale
 

Discussioni simili