IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Upload de photo sans perte de qualité


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    437
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 437
    Points : 184
    Points
    184
    Par défaut Upload de photo sans perte de qualité
    Bonjour

    J'ai un script d'upload de photo avec plusieurs redimensionnement . ce que je souhaite c'est apporté une amélioration .

    Je souhaites donc uploadé mes photos en php MAIS en gardant la qualité des images aprés upload :

    voilà le code, qu'est ce que je pourrais apporté comme amélioration pour donc upload sans perte de qualité


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    <?php
    session_start();
    include("mysqlcon.php");
    function getExtension($str) 
    {
     
             $i = strrpos($str,".");
             if (!$i) { return ""; } 
             $l = strlen($str) - $i;
             $ext = substr($str,$i+1,$l);
             return $ext;
    }
    if(isset($_FILES["photodp"]))
    {
    	define ("MAX_SIZE",	"4000000");
    	$errors	=	0;
    	$filename		=	$_FILES["photodp"]["name"];
    	$uploadedfile 	= 	$_FILES['photodp']['tmp_name'];
    	$type_file 		= $_FILES['photodp']['type'];
    	if ($filename) 
    	{
    		if( !is_uploaded_file($uploadedfile) )
    		{
    			echo "<script type='text/javascript'>alert(\"le fichier est introuvable\")</script>"; 
    echo ("Fichier introuvable");
     
    		}
    		// on vérifie maintenant l'extension
    		elseif( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') && !strstr($type_file, 'png'))
    		{
    			exit("Le fichier n'est pas une image");
    echo ("Le fichier n'est pas une image");
     
    		}
    		else
    		{
     
    			$size		=	filesize($_FILES['photodp']['tmp_name']);
    			if ($size > MAX_SIZE*1024)
    			{echo ("vérifié la taille de image");
     
    				exit ("verifier la taille de votre image!!");
    				$errors=1;
    			}
    			$extension 	= 	getExtension($filename);
    			$extension 	= 	strtolower($extension);
    			if($extension=="jpg" || $extension=="jpeg" )
    			{
    				$uploadedfile 	= 	$_FILES['photodp']['tmp_name'];
    				$src 			= 	imagecreatefromjpeg($uploadedfile);
    			}
    			else if($extension=="png")
    			{
    				$uploadedfile 	= 	$_FILES['photodp']['tmp_name'];
    				$src 			= 	imagecreatefrompng($uploadedfile);
    			}
    			else 
    				$src 	= 	imagecreatefromgif($uploadedfile);
     
    			list($width,$height)	=	getimagesize($uploadedfile);
     
    			$newwidth	=	640;
    			$newheight	=	486;
    			$tmp		=	imagecreatetruecolor($newwidth,$newheight);
     
    			$newwidth1	=	140;
    			$newheight1	=	93;
    			$tmp1		=	imagecreatetruecolor($newwidth1,$newheight1);
     
     
    			$newwidth2	=	300;
    			$newheight2	=	300;
    			$tmp2		=	imagecreatetruecolor($newwidth2,$newheight2);
     
     
    			imagecopyresampled($tmp, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
     
    			imagecopyresampled($tmp1, $src, 0, 0, 0, 0, $newwidth1, $newheight1, $width, $height);
     
    			imagecopyresampled($tmp2, $src, 0, 0, 0, 0, $newwidth2, $newheight2, $width, $height);
     
    			 $name = "xxx-com";
     
    		$idcon = $_SESSION["id_user"];
            $dest_fichier = '' .time(). '' .$name. '.' .$extension;
    		$filename 	= 	"upload/". $dest_fichier;
    		$filename1 	= 	"upload/small_". $dest_fichier;
    		$filename2 	= 	"upload/photodp_". $dest_fichier;
     
    		$qu = "INSERT INTO albums(id,id_user,lien, miniature, photodp, type) VALUES ('', '$idcon','$filename','$filename1','$filename2','album')";
    		$qus = $conn->query($qu);
    			imagejpeg($tmp,$filename,100);
    			imagejpeg($tmp1,$filename1,100);
    			imagejpeg($tmp2,$filename2,100);
     
    			imagedestroy($src);
    			imagedestroy($tmp);
    			imagedestroy($tmp1);
    			imagedestroy($tmp2);
    		}
    	}
     
    } else {
    	echo("Mauvais fichier");
    }
     
    ?>

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ton problème ne serait pas plutôt que tu déformes les proportions de l'image ?
    Concernant la qualité, étant donné que tu changes les dimensions, tu perds des informations sur l'original.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    437
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 437
    Points : 184
    Points
    184
    Par défaut
    Oui bien sur cela déforme l'image c'est ce que j'appelle une perte de qualité (j'avou que je me suis peut etre mal exprimé)

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    jreaux a écrit une classe de redimensionnement qui gère ça :
    http://j-reaux.developpez.com/tutori...sionner-image/
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    en fait, j'ai écrit des fonctions de redimensionnement

    ABCIWEB a écrit une Classe d'Upload et Redimensionnement

  6. #6
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    437
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 437
    Points : 184
    Points
    184
    Par défaut
    et laquelle me conseille tu pour évité qu'elle se déforme aux maximum, et que je puisse adapté a mon site?

  7. #7
    Invité
    Invité(e)
    Par défaut
    Est-ce qu'au moins tu as suivi les liens et LU les articles ??


    1/ dans mes fonctions, j'ai :

    3. Redimensionnement physique "proportionnel"


    2/ ABCIWEB a utilisé mes fonctions pour sa classe

    Et comme indiqué, sa classe fait l'upload ET le redimensionnement.
    A toi de savoir ce dont tu as besoin.

  8. #8
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    437
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 437
    Points : 184
    Points
    184
    Par défaut
    en étudiant vos scripts, j'ai réussi à faire quelques chose avec mon script.

    j'ai donc redimensionné l'image en gardant les proportions en beaucoup plus grand, et après j'ai réduit en fonction des dimensions que j'avais besoin.

    voila le code la parti corrigé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    list($width,$height)	=	getimagesize($uploadedfile);
     
    			if($height < 1000){
    			$newwidth0	=	$width * 2;
    			$newheight0	=	$height * 2;
    			$tmp0		=	imagecreatetruecolor($newwidth0,$newheight0);
    		} else {
     
    			$newwidth0	=	$width;
    			$newheight0	=	$height;
    			$tmp0		=	imagecreatetruecolor($newwidth0,$newheight0);
     
     
    		}
     
    			$newwidth	=	$newwidth0;
    			$newheight	=	$newheight0;
    			$tmp		=	imagecreatetruecolor($newwidth,$newheight);
     
     
    			if($newwidth >= 2000){
    			$newwidth1	=	$newwidth / 20;
    			$newheight1	=	$newheight / 20;
    			$tmp1		=	imagecreatetruecolor($newwidth1,$newheight1);
    			}
    			elseif($newwidth > 1000 && $newwidth < 2000){
    				$newwidth1	=	$newwidth / 10;
    			$newheight1	=	$newheight / 10;
    			$tmp1		=	imagecreatetruecolor($newwidth1,$newheight1);
    			}else{
    			$newwidth1	=	$newwidth / 5;
    			$newheight1	=	$newheight / 5;
    			$tmp1		=	imagecreatetruecolor($newwidth1,$newheight1);
    			}

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Script d'upload sans perte de qualité
    Par runcafre91 dans le forum Langage
    Réponses: 5
    Dernier message: 14/11/2010, 12h00
  2. conversion flv mp3 sans perte de qualité
    Par barbug dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 14/08/2010, 13h02
  3. Inclure un dessin sans perte de qualité
    Par Christophe Genolini dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 3
    Dernier message: 17/05/2009, 17h00
  4. Dessiner sur un Jpeg sans perte de qualité
    Par poly128 dans le forum Langage
    Réponses: 3
    Dernier message: 03/09/2007, 21h35
  5. Upload de photo et réduire la qualité.
    Par Poulain dans le forum ASP.NET
    Réponses: 6
    Dernier message: 27/08/2007, 14h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo