Accueil > > > REDIMENSIONNEMENT D'UNE IMAGES, GIF, PNG, JPEG, JPG
REDIMENSIONNEMENT D'UNE IMAGES, GIF, PNG, JPEG, JPG
Information sur la source
Description
J'éspère que ce code vous sera utile, je n'ai pas encore eu de problème avec ce code, je l'ai améliorer au fur et à mesure du temps. Elle redimenssione les images en gardant les proportions, bien sur ! Vous avez besoin de la fonction "mime_content_type" sur votre serveur pour afficher correctement l'image.
Pour simplifier le nombre de variable faites une seconde fonction pour juste un affichage ou un enregistrement, exemple :
// Voir une image
function show_image( $src, $size ) { // 2 variables, une pour la source et une pour la taile, la taille s'exprime comme ceci (100x100 ou 200x200 etc.)
return do_image( $src, '', $size, 1, 0 );
}
// Enregistré l'image
function save_image( $src, $size, $dest, $del ) { // 4 variables, la source, la taille maximun, la destination de sauvegarde, si on supprime la source (0=non, 1=oui)
return do_image( $src, $dest, $size, 0, $del );
}
// La fonction "do_image"
do_image( string filename src, string filename dest, string maxSize, int show, int del )
Pour le paramêtre "show" 1 signifie l'affiché, 0 signifie l'inverse logique. Pareils pour le paramêtre "del", 1 signie supprimé le fichier une fois convertis, 0 signe ne pas le supprimé après l'affichage ou l'enregistrement
Source
- function do_image($src, $dest, $size, $show, $del=1) {
-
- // Extension du fichier
- $ext = strtolower( substr( strrchr( $src, '.' ), 1 ) );
-
- // Si l'extension est reconnue
- if( !in_array( $ext, array( 'jpg', 'jpeg', 'gif', 'png' ) ) ) ) {
-
- return FALSE;
- }
-
- // Propriété du fichier
- list( $width, $height, $type, $attr ) = getimagesize($src);
-
- // Contrôle du type d'image
- if( !in_array( $type, array( 1,2,3 ) ) ) {
-
- if( $del == 1 ) {
-
- unlink( $src );
- }
-
- return FALSE;
- }
-
- // Création d'une images a partir de l'original
- switch( $type ) {
-
- case 1: $tmp = imagecreatefromgif($src); break;
- case 2: $tmp = imagecreatefromjpeg($src); break;
- case 3: $tmp = imagecreatefrompng($src); break;
-
- default : return FALSE;
- }
-
- // Infos des taillles maximum
- $size = empty( $size ) || strpos( strtolower( $size ), 'x' ) === FALSE ? 100x100 : $size;
-
- list( $max_width, $max_height ) = explode('x', $size);
-
- // Calcul des tailles proportionnelles
- if( $width > $max_width || $height > $max_height ) {
-
- if( $width >= $height ) {
-
- if( $width > $max_width ) {
-
- $width_img = $max_width;
- $propB = $width/$width_img;
- $height_img = floor($height/$propB);
-
- }
-
- if( $height_img > $max_height ) {
-
- $height_img = $max_height;
- $propB = $height/$height_img;
- $width_img = floor($width/$propB);
-
- }
-
- }
- else {
-
- if( $height > $max_height ) {
-
- $height_img = $max_height;
- $propB = $height/$height_img;
- $width_img = floor($width/$propB);
-
- }
-
- if( $width_img > $max_width ) {
-
- $width_img = $max_width;
- $propB = $width/$width_img;
- $height_img = floor($height/$propB);
-
- }
-
- }
- }
- else {
-
- $width_img = $width;
- $height_img = $height;
- }
-
- // Création de l'image trueColor
- $img = imagecreatetruecolor($width_img, $height_img);
-
- // Copie d'un contenue vers un autre, rééchantillonnage
- if( imagecopyresampled($img, $tmp, 0, 0, 0, 0, $width_img, $height_img, $width, $height) !== false ) {
-
- // Enregistrement ou affichage
- if( $show != 1 ) {
-
- switch( $type ) {
-
- case 1 : imagegif($img, $dest); break;
- case 2 : imagejpeg($img, $dest, 100); break;
- case 3 : imagepng($img, $dest); break;
-
- default: return FALSE;
- }
-
- }
- else {
-
- @header("Content-type: ". mime_content_type( $src ) );
-
- switch( $type ) {
-
- case 1 : imagegif($img); exit; break;
- case 2 : imagejpeg($img, '', 100); exit; break;
- case 3 : imagepng($img); exit; break;
-
- default: return FALSE;
- }
-
- }
- }
-
- // On supprime $del est égal à 1
- if( $del == 1 )
- unlink($src);
-
- // Suppression des variables
- unset($img, $tmp, $src);
-
- }
function do_image($src, $dest, $size, $show, $del=1) {
// Extension du fichier
$ext = strtolower( substr( strrchr( $src, '.' ), 1 ) );
// Si l'extension est reconnue
if( !in_array( $ext, array( 'jpg', 'jpeg', 'gif', 'png' ) ) ) ) {
return FALSE;
}
// Propriété du fichier
list( $width, $height, $type, $attr ) = getimagesize($src);
// Contrôle du type d'image
if( !in_array( $type, array( 1,2,3 ) ) ) {
if( $del == 1 ) {
unlink( $src );
}
return FALSE;
}
// Création d'une images a partir de l'original
switch( $type ) {
case 1: $tmp = imagecreatefromgif($src); break;
case 2: $tmp = imagecreatefromjpeg($src); break;
case 3: $tmp = imagecreatefrompng($src); break;
default : return FALSE;
}
// Infos des taillles maximum
$size = empty( $size ) || strpos( strtolower( $size ), 'x' ) === FALSE ? 100x100 : $size;
list( $max_width, $max_height ) = explode('x', $size);
// Calcul des tailles proportionnelles
if( $width > $max_width || $height > $max_height ) {
if( $width >= $height ) {
if( $width > $max_width ) {
$width_img = $max_width;
$propB = $width/$width_img;
$height_img = floor($height/$propB);
}
if( $height_img > $max_height ) {
$height_img = $max_height;
$propB = $height/$height_img;
$width_img = floor($width/$propB);
}
}
else {
if( $height > $max_height ) {
$height_img = $max_height;
$propB = $height/$height_img;
$width_img = floor($width/$propB);
}
if( $width_img > $max_width ) {
$width_img = $max_width;
$propB = $width/$width_img;
$height_img = floor($height/$propB);
}
}
}
else {
$width_img = $width;
$height_img = $height;
}
// Création de l'image trueColor
$img = imagecreatetruecolor($width_img, $height_img);
// Copie d'un contenue vers un autre, rééchantillonnage
if( imagecopyresampled($img, $tmp, 0, 0, 0, 0, $width_img, $height_img, $width, $height) !== false ) {
// Enregistrement ou affichage
if( $show != 1 ) {
switch( $type ) {
case 1 : imagegif($img, $dest); break;
case 2 : imagejpeg($img, $dest, 100); break;
case 3 : imagepng($img, $dest); break;
default: return FALSE;
}
}
else {
@header("Content-type: ". mime_content_type( $src ) );
switch( $type ) {
case 1 : imagegif($img); exit; break;
case 2 : imagejpeg($img, '', 100); exit; break;
case 3 : imagepng($img); exit; break;
default: return FALSE;
}
}
}
// On supprime $del est égal à 1
if( $del == 1 )
unlink($src);
// Suppression des variables
unset($img, $tmp, $src);
}
Conclusion
Laissez moi des critiques avec des solutions, si il n'y pas de solutions au problème c'est une critique qui n'est pas utile.
Historique
- 17 décembre 2006 19:10:26 :
- J'ai modifier l'explication afin quelle soit plus clair.
- 21 décembre 2006 10:45:02 :
- Corrections du code selon des critiques du code
- 22 mai 2007 13:44:32 :
- Corrections diverses
- 22 mai 2007 13:49:48 :
- Corrections des dimensions ...
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
:::::: URGENT !!! ENVOI D'IMAGE PAR FTP !!!! ERREUR :::::: [ par kkz_mil3k ]
j'essaie d'nevoyer un fichier image gif ou jpg sur un ftp via ce formulaire php :------------------------------------------- //**connecte au ftp sc
Comment insérer un champs image ds ma table ?? [ par inceV ]
Salut à tous et bonne année 2002 !!!Bon, je n'arrive pas à créer un champs 'image' ds ma table et je ne comprends pas tp commen ça marche, pourriez-vo
Faire unr image sur le serveur en PHP [ par fabiin ]
Salut !En ASP, il y a un composant ki permet de créer une image sur le serveur,...on peu avec 2-3 ligne de codes, faire un dégradé, mettre du texte, e
Insérer une image dans une autre [ par cduf ]
Je sais créer une image (compteur) avec des commandes php GD, mais comment l'insérer dans une autre (bannière). Merci de m'aider.Email : cdufetelle@wa
envoyer une image dans le $message de mail() [ par linov ]
Bonjour,Comment faire pour envoyer une image dans le $message envoyé par la fonction mail() ?Syntaxe ? Paramètres ? Est-ce possible ?Merci de votre ai
include image [ par erich10 ]
comment faire un include d'une image ?et comment faire en plus un lien sur cette image?merci
générer des miniatures avec gd 1.6 [ par vegetaline ]
muhaha alors là c'est rigolo, un super défi pour les programmeurs fous!ok j'ai le code pour générer des miniatures grâce au php, mais ça marche qu'ave
MySQL et images [ par Marneus Calgar ]
SalutJ'aimerais savoir s'il est possible de stocker des images dans une table MySQL et d'y accéder depuis une page PHP. En fait, je voudrais faire un
MySQL et images [ par Marneus Calgar ]
SalutJ'aimerais savoir s'il est possible de stocker des images dans une table MySQL et d'y accéder depuis une page PHP. En fait, je voudrais faire un
Ne pas afficher la barre de Menu Image [ par microdav ]
Bonjour à vous Internaute,je vous soumets une petite question...Je recherche Code permettant de ne pas faire afficher la barre de menu "Image" sur une
|
Derniers Blogs
GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|