ridimensionare immagine da hd con php

helpdesk

Utente Attivo
30 Set 2009
726
0
0
Pesaro
Salve ragazzi, devo ridimensionare un immagine prelevata dall'hd
ho trovato questo tutorial di mr.webmaster ma non mi funziona dove sbaglio? mi aiutereste?

<?php
// Ottengo le informazioni sull'immagine originale
list($width, $height, $type, $attr) = getimagesize($_FILES['image']['tmp_name']);

// Creo la versione 133*120 dell'immagine (thumbnail)
$thumb = imagecreatetruecolor(133, 120);
$source = imagecreatefromjpeg($_FILES['image']['tmp_name']);
imagecopyresized($thumb, $source, 0, 0, 0, 0, 133, 120, $width, $height);

?>

Script tratto da questo articolo : https://www.mrw.it/php/articoli/ridimensionare-immagini-php_671.html
 
Ultima modifica:
ragazzi questo script mi ridimensiona le immagini il problema è che comunque vengono distorte, nel senso che se dico di farle 200x200 le fa ma poi se un immagine era 140x210 viene distorta e diventa quadrata.
Come faccio a mantenere le proporzioni senza ottenere distorsioni?


$memoria=count($memoria);
$tipologia=".jpg";
$foto=$memoria.$tipologia;
$percorso = './';

$img =$percorso.$foto;
$Larghezza= 400;
$Altezza = 800;
$thumbComp = 100;
$thumb = imagecreate($Larghezza,$Altezza) or die("Impossibile creare la miniatura");
$src = imagecreatefromjpeg($img) or die ("Impossibile aprire l'immagine originale");
imagecopyresized($thumb, $src, 0, 0, 0, 0, $Altezza,$Larghezza, imageSx($src), imageSy($src)) or die("Impossibile ridimensionare l'immagine");
imagejpeg($thumb, $img, $thumbComp) or die("Impossibile salvare la miniatura");
 
Prova con questo, trovato per la rete:
PHP:
<?php
$width_percent = 0.5; // 50% dell'originale

// Caricamento immagine
$im = @imagecreatefromjpeg($image_file);

// Leggo le dimensioni originali dell'immagine
$width = imagesx($im);
$height = imagesy($im);

// Imposto le nuove dimensioni dell'immagine
$new_width = $width * $width_percent;
$new_height = ($new_width * $height) / $width;

// Ridimensiono l'immagine
$im_resized = imagecreatetruecolor($new_width, $new_height);
imagecopyresampled($im_resized, $im, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
?>
 
Non va bene perchè se prendo un immagine di 2000 pixel nell'hd me la fa di 1000 ed è comunque troppo ma se ne prendo una di 100 pixel me la fa 50 pixel troppo piccola. Devo dare sempre un valore minimo esempio 200x200 e uno massimo esempio 400x400 ma però deve tenere in proporzione restando nei parametri.
 
ciao
una volta che hai la larghezza e l'altezza reale dell'immagine potresti fare

PHP:
//trovo quale misura è la maggiore
$misura_piu_grande=max($width,$height);
//imposti la largezza e altezza massima che vuoi in funzione della massima dell'originale
if($misura_piu_grande > 2000){
	$max_w = 400;
	$max_h = 400;
}else{
	$max_w = 200;
	$max_h = 200;
}
//eseguo il rapporto e ricavo il valore minio tra i due rapporti
$ratio = min($max_w/$width,$max_h/$height);
// Verifico che l'immagine originale sia più grande delle dimensioni massime $max_w x $max_h
if ($ratio < 1){
	// Individuo le nuove dimensioni da assegnare all'immagine
	$w = floor($ratio*$width);
	$h = floor($ratio*$height);
}else{//se invece più piccola non ridemensiono
	$w = $width;
	$h = $height;
}
    // creo una nuova immagine con le dimensioni appena calcolate
    $rimpicc = @imagecreatetruecolor($w,$h);
//eccetera.....

prova al massimo non funzia
 

Discussioni simili