Redimension d'image qualité mediocre

Petit nouveau ! | 2 Messages

14 janv. 2011, 16:02

Bonjour, je fait appel à vous car je n'arrive pas a résoudre un problème.
Dans le cadre de mon apprentissage personnel je veut pratiquer avant de m'aventurer trop loin dans le cour sans rien comprendre.
Je fait donc un site qui référence ma collection de film série manga, et pour cela je veut que mes images se redimensionne d'elle même, j'y suis parvenu sans trop de problème mais le résultat est très décevant niveau qualité !
Voila 4 image dans l'ordre : Image d'origine ; Photoshop 250px L ; PHP 250px L; Les 3 enssemble
Origine
http://www.casimages.com/img.php?i=1101 ... 683685.jpg
Photoshop
http://www.casimages.com/img.php?i=1101 ... 647971.jpg
PHP
http://www.casimages.com/img.php?i=1101 ... 331790.jpg
TOTAL
http://www.casimages.com/img.php?i=1101 ... 829530.jpg

Voici maintenant mon code :
<?php
	$dossier = 'Images/';
	$maxsize = '10485760';
	$maxwidth = '20000';
	$maxheight = '20000';

	if ($_FILES['icone']['error'] > 0) 
	{
		$erreur = 'Erreur lors du transfert';
	}
	else
	{
		if ($_FILES['icone']['size'] > $maxsize)
		{
			$erreur = 'Le fichier est trop gros';
		}
		else
		{
			$extensions_valides = array('jpg','jpeg','gif','png');
			$extension_upload = strtolower(  substr(  strrchr($_FILES['icone']['name'], '.'),1));
			
			if (in_array($extension_upload,$extensions_valides))
			{
				$image_sizes = getimagesize($_FILES['icone']['tmp_name']);
				
				if (!$image_sizes[0] > $maxwidth OR $image_sizes[1] > $maxheight) 
				{
					$erreur = 'Image trop grande';
				}
				else
				{
					$nom = "{$_FILES['icone']['name']}";
					
					$nom_fichier = $_FILES['icone']['name'];
					
					$resultat = move_uploaded_file($_FILES['icone']['tmp_name'],$dossier.$nom);
					
					if ($resultat)
					{
						echo 'Transfert reussi';
						
				
					}
					else
					{
						echo 'Echec du transfert';
					}
				}
			}
			else
			{
				echo 'Extension incorect';
			}
		}
	}
$file = 'images/'.$nom_fichier; # L'emplacement de l'image à redimensionner. L'image peut être de type jpeg, gif ou png


$size = getimagesize($file);

if ( $size) {
echo 'Image en cours de redimensionnement...
';


$x = 250;

$y = $size[0] / $x; # Taille en pixel de l'image redimensionnée
$y = $size[1] / $y;
$y = floor($y);


if ($size['mime']=='image/jpeg' ) {
$img_big = imagecreatefromjpeg($file); # On ouvre l'image d'origine
$img_new = imagecreate($x, $y);
# création de la miniature
$img_mini = imagecreatetruecolor($x, $y) 
or   $img_mini = imagecreate($x, $y);

// copie de l'image, avec le redimensionnement.
imagecopyresized($img_mini,$img_big,0,0,0,0,$x,$y,$size[0],$size[1]);

imagejpeg($img_mini,$file,100 );

}
elseif ($size['mime']=='image/png' ) {
$img_big = imagecreatefrompng($file); # On ouvre l'image d'origine
$img_new = imagecreate($x, $y);
# création de la miniature
$img_mini = imagecreatetruecolor($x, $y)
or   $img_mini = imagecreate($x, $y);

// copie de l'image, avec le redimensionnement.
imagecopyresized($img_mini,$img_big,0,0,0,0,$x,$y,$size[0],$size[1]);

imagepng($img_mini,$file,100 );

}
echo 'Image redimensionnée !

';
}

?>
Et au cas ou vous voudriez testez :
<?php session_start() ?>
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Upload</title>
<style type="text/css">

</style>
</head>
<body>
<html>


<form action="redim.php" method="post" enctype="multipart/form-data">

	<p>Jackette</p><p><input type="file" name="icone" /></p>
	<input type="submit" value="Envoyer" />
	
</form>


</html>
</body>]
Merci de votre aide, tout en sachant que ce que je vous demande n'est surement pas chose simple :?

ViPHP
ViPHP | 5462 Messages

14 janv. 2011, 16:08

essaye avec imagecopyresampled

Petit nouveau ! | 2 Messages

14 janv. 2011, 16:11

Toi je t'aime :D !!!

Merci infiniment ^^ !!!