begin process at 2010 02 10 15:08:11
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > MINIATURE SOUS CONTRAINTE OPTIMISÉE AU MAXIMUM

MINIATURE SOUS CONTRAINTE OPTIMISÉE AU MAXIMUM


 Information sur la source

Note :
Aucune note
Catégorie :Graphique Niveau :Débutant Date de création :08/02/2004 Date de mise à jour :28/03/2004 13:36:10 Vu :5 008

Auteur : pyroflo

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (31)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
Je cherchais à faire des miniatures devant être affichées dans des tableaux, donc elles ne devaient pas dépasser X pixel de largeur et Y de hauteur.

J'ai souvent vu des sources faisant cela à l'aide d'un coefficient réducteur fixe (exemple: miniature = 1/3 de la vraie photo).

Alors voilà cette petite fonction qui optimise au mieux les dimensions de l'image passée en paramètre aux limites souhaitées.

Source

  • function MakeThumb($img,$maxX,$maxY) {
  • // Récupération des infos sur l'image
  • $TImage = GetImageSize($img);
  • // Rapport initial: aucune réduction
  • $rapport = 1;
  • // Si la largeur de l'image est supérieure à la limite
  • if ($TImage[0] > $maxX)
  • // Tant que la largeur réduite est supérieure à la limite
  • while ($TImage[0] / $rapport > $maxX)
  • // Augmentation de la réduction
  • $rapport = $rapport + 0.5;
  • // Assignation de la largeur finale
  • $xF = $TImage[0] / $rapport;
  • // Si la hauteur de l'image est supérieure à la limite
  • // Si non, le rapport est le même que celui utilisé pour la largeur
  • if ($TImage[1] > $maxY)
  • // Tant que la hauteur réduite est supérieure à la limite
  • while ($TImage[1] / $rapport > $maxY)
  • // Augmentation de la réduction
  • $rapport = $rapport + 0.5;
  • // Assignation de la hauteur finale
  • $yF = $TImage[1] / $rapport;
  • // Récupération du handle de l'image selon son format
  • switch($TImage[2]) {
  • case 1:
  • $imageF = ImageCreateFromGIF($img);
  • break;
  • case 2:
  • $imageF = ImageCreateFromJPEG($img);
  • break;
  • case 3:
  • $imageF = ImageCreateFromPNG($img);
  • break;
  • }
  • // Création de la miniature
  • $thumbF = ImageCreateTrueColor($xF,$yF);
  • // Compatibilité: ImageCopyResized($thumbF,$imageF,0,0,0,0,$xF,$yF,$TImage[0],$TImage[1]);
  • ImageCopyResampled($thumbF,$imageF,0,0,0,0,$xF,$yF,$TImage[0],$TImage[1]);
  • // Envoie de l'image au navigateur selon son format
  • switch($TImage[2]) {
  • case 1:
  • ImageGIF($thumbF,'images/mini_'.SubStr($img,StrPos($img,'/') + 1), 60);
  • break;
  • case 2:
  • ImageJPEG($thumbF,'images/mini_'.SubStr($img,StrPos($img,'/') + 1), 60);
  • break;
  • case 3:
  • ImagePNG($thumbF,'images/mini_'.SubStr($img,StrPos($img,'/') + 1), 60);
  • break;
  • }
  • // Libération de la mémoire
  • ImageDestroy($thumbF);
  • ImageDestroy($imageF);
  • }
function MakeThumb($img,$maxX,$maxY) {
	
	// Récupération des infos sur l'image
	$TImage = GetImageSize($img);
	// Rapport initial: aucune réduction
	$rapport = 1;

	// Si la largeur de l'image est supérieure à la limite
	if ($TImage[0] > $maxX)
		// Tant que la largeur réduite est supérieure à la limite
		while ($TImage[0] / $rapport > $maxX)
			// Augmentation de la réduction
			$rapport = $rapport + 0.5;

	// Assignation de la largeur finale
	$xF = $TImage[0] / $rapport;

	// Si la hauteur de l'image est supérieure à la limite
	// Si non, le rapport est le même que celui utilisé pour la largeur
	if ($TImage[1] > $maxY)
		// Tant que la hauteur réduite est supérieure à la limite
		while ($TImage[1] / $rapport > $maxY)
			// Augmentation de la réduction
			$rapport = $rapport + 0.5;

	// Assignation de la hauteur finale
	$yF = $TImage[1] / $rapport; 

	// Récupération du handle de l'image selon son format
	switch($TImage[2]) {
		
		case 1:
		$imageF = ImageCreateFromGIF($img);
		break;
		
		case 2:
		$imageF = ImageCreateFromJPEG($img);
		break;
		
		case 3:
		$imageF = ImageCreateFromPNG($img);
		break;
	}
	
	// Création de la miniature
	$thumbF = ImageCreateTrueColor($xF,$yF);

	// Compatibilité: ImageCopyResized($thumbF,$imageF,0,0,0,0,$xF,$yF,$TImage[0],$TImage[1]);
	ImageCopyResampled($thumbF,$imageF,0,0,0,0,$xF,$yF,$TImage[0],$TImage[1]);
	
	// Envoie de l'image au navigateur selon son format
	switch($TImage[2]) {
		
		case 1:
		ImageGIF($thumbF,'images/mini_'.SubStr($img,StrPos($img,'/') + 1), 60);
		break;
		
		case 2:
		ImageJPEG($thumbF,'images/mini_'.SubStr($img,StrPos($img,'/') + 1), 60);
		break;
		
		case 3:
		ImagePNG($thumbF,'images/mini_'.SubStr($img,StrPos($img,'/') + 1), 60);
		break;
	}

	// Libération de la mémoire
	ImageDestroy($thumbF);
	ImageDestroy($imageF);
}

 Conclusion

Exemple: MakeThumb('images/maphoto.jpg',200,150)

/!\ Modifiez les chemins de vos images

Testé avec succès :p

Un commentaire fait toujours plaisir ;)

En espérant vous avoir un peu aidé...

PyRoFlo

Tout sur la pyrotechnie - http://www.abcpyro.com


 Sources du même auteur

Source avec Zip NEWSLETTER TRES COMPLETE -- AVEC BDD -- INSTALLATION AUTOMAT...
Source avec Zip GESTION/ADMINISTRATION EN LIGNE DE COMPTEURS DE CLICS + GRAP...
Source avec Zip TUTORIAL SUR LES SESSIONS AVEC UN ESPACE MEMBRES COMME EXEMP...
"RECOMMANDATEUR" INDISCRET, QUAND TU NOUS TIENS...
FORMULAIRE D'INSCRIPTION AVEC MAIL DE CONFIRMATION POUR LE V...

 Sources de la même categorie

Source avec Zip RECHERCHE DE MOTIF DANS UNE IMAGE par ParseError
BARRES PARAMÉTRABLES EN DÉGRADÉ DE COULEUR ET AVEC TEXTE DA... par hornetbzz
Source avec Zip Source avec une capture GALERIE PHOTO SIMPLE À GÉRER par francky6691
Source avec Zip Source avec une capture DIAPORAMA AVEC AJOUT ET REDIMENSIONEMENT DE PHOTOS, CRÉATION... par giloum
Source avec Zip Source avec une capture AFFICHAGE INFOBULLE SUR GRAPHIQUE ARTICHOW par nirronico

Commentaires et avis

Commentaire de Anthomicro le 09/02/2004 19:13:26

Salut !

Voici le code que j'utilise pour mon site :


$image="photos/1.jpg"; //EXEMPLE D'IMAGE
if (file_exists($image))
{
list($width, $height, $type, $attr) = getimagesize("$image");
if (($width)>100) //SI L'IMAGE FAIT PLUS DE 100PX de LARGE
{
$contenu.=' <img src="'.$image.'" align="middle" width="100"> <br>';
}
else
{
$contenu.=' <img src="'.$image.'" align="middle"> <br>';
}
}


Facile ensuite de le transformer en fonction

a +

Commentaire de pyroflo le 09/02/2004 19:22:02

Salut,

tu ne crées pas de miniature, tu modifies seulement l'affichage dans le tag <img> donc l'image est chargée entièrement même si tu l'affiches 6 fois plus petite...

Tu vois le truc ?

Imagines une galerie de 20 * 20ko !

Commentaire de Anthomicro le 09/02/2004 19:27:08

Désolé j'ai pas regardé le code en détail mais juste le texte : "Je cherchais à faire des miniatures devant être affichées dans des tableaux, donc elles ne devaient pas dépasser X pixel de largeur et Y de hauteur."

C'est pour ça je n'ai pas approfondi. Tu réduis la taille de l'image et ensuite tu la redimensionnes. Ok Ok

a +

Commentaire de pyroflo le 09/02/2004 19:28:17

Y a pas de soucis ;p

Commentaire de psyjc le 10/02/2004 10:52:29

hum
le rapport hauteur/largeur ne semble pas etre conservé!


j'utilise ca:


        $IMAGE_TN_SIZE = 80 // Taille maximal a ne pas depassé (largeur ou hauteur)

        $handle = @imagecreatefromjpeg($relatif_link);
        $x=imagesx($handle);
        $y=imagesy($handle);
        //echo "X:$x  |  Y:$y<br />";
                                                    #       100
        if($x>$y){                                  #  |-------------|
         $max=$x;                                   #  +-------------+ - -
         $min=$y;                                   #  |             |   |
         }                                          #  |             |   |
        if($x<=$y){                                 #  |     img     |   |100
         $max=$y;                                   #  |             |   |
         $min=$x;                                   #  |             |   |
         }                                          #  +-------------+ - -

        if($max==$x){
        $qq=$max/$IMAGE_TN_SIZE;
        }

        if($max==$y){
        $qq=$max/$IMAGE_TN_SIZE;
        }
        
        $dest_x=$x/$qq;
        $dest_y=$y/$qq;


        if($dest_x > $x) {
         $dest_x = $x;
         $dest_y = $y;                
        }


        $dst_img = imageCreatetruecolor($dest_x,$dest_y);


        imagecopyresized($dst_img, $handle, 0, 0, 0, 0,$dest_x, $dest_y, $x, $y);

        imagejpeg($dst_img,'', $IMAGE_TN_COMPRESSION);
        imagedestroy($handle);
        imagedestroy($dst_img);

qui marche impec : demo ici : http://jcjcjcjc.free.fr/server/

Commentaire de bonjovi51 le 10/02/2004 12:29:52

Est ce que toutes versions de GD supportent cette version? Je sais que beaucoup d'hébergeur utilise la version 1.6 et que les fonctions que vous créez sont pour les version 2.0 ou +.

Ce serait bien d'adapter les fonctions pour toutes les versions.....

@+ et merci d'ajouter des fonctions qui sont utiles pour nous autres....

Commentaire de psyjc le 10/02/2004 13:39:41

pour celle que jai donné, a la base elle fonctionne pour GD1.x et GD2
seulement pour l'exemple ci dessus, jai epuré juste au nessaissaire (en gardant uniquement pour GD2)
la version complete du script est a l'adresse que jai donné en demo, il faut le telecharger.
le reel probleme est quil est difficile de reperer automatiquement sur un serveur si il utilise GD1.x ou GD2 sans provoquer d'erreur!

Commentaire de bonjovi51 le 10/02/2004 13:53:40

Je te remercie pour les précisions. Si je vois une erreur, je l'annonce !!

Commentaire de bonjovi51 le 10/02/2004 16:15:54

Marche pas ton lien !!

Commentaire de pyroflo le 10/02/2004 18:00:26

psyjc, oui le rapport hauteur/largeur n'est pas vraiment respecté, c'est vrai, car pour mon utilisation les dimensions limites sont de 200*150 ça ressemble drôlement à un carré ;)
Et comme je ne souhaite pas faire des miniatures vraiment toutes petites (ex: 70*120)...

Ma fonction convient à mes besoins, à vous de la personnaliser :p

Commentaire de jerome_ le 11/02/2004 11:36:00

Merci pour l'algo ca m'a donné un bon début pour commencer ;)


Par contre je comprend pas pourquoi tu fais unwhile pour trouver ton rapport de réduction.

tu fais:

imagecopyresampled($thumbF,$imageF,0,0,0,0,$xF,$yF,$TImage[0],$TImage[1]);


mais ceci fais pareil non?:

imagecopyresampled($thumbF,$imageF,0,0,0,0,$maxX,$maxY,$TImage[0],$TImage[1]);

en fait ton while sert a te rapprocher de la taille maximale mais donc tu n'atteitn pas exactement la taille maxi précise. En gros ton $xF = $maxX, et $yF = $maxY.

Autre question plus importante, j utilise ton test pour voir si l image traitée est une Gif, Jpeg ou Png, mais dans le cas des gif et png, apres le traitement le fond de l image apparait noir, je crois que ca doit venir d un problème de transparence, pourrais tu m'aiguiller sur ce problème?

De plus j'arrive pas a afficher les images Gif si je fais un "imagegif()" pourtant j ai biens fais un "imagecreatefromgif()", par contre si je remplace le "imagegif()" par "imagejpg()" ca arrive a l'afficher.

l'"imagepng()" marche mais si je met "imagejpeg()" a la place ca donne le meme résultat.

Commentaire de pyroflo le 11/02/2004 16:21:48

jerome_, tu as tout compris :) La boucle permet de remplir au mieux l'espace dédié à la miniature, par contre, en mettant directement les limites comme dimensions, les proportions ne seraient pas respectées du tout !

Pour ce qui est des PNG, chez moi je n'ai aucun problème ! Version de GD: 2.0.15
Tu as sûrment raison, ça doit venir de la transparence mais je n'en sais pas plus...

Pour les GIF, j'ai finalement retiré ce format pour l'upload d'image.
Trop chiant à mettre en oeuvre, théoriquement ma fonction devrait fonctionner mais depuis la version 1.5 (je crois), le GIF n'est plus supporté par GD à cause des droits etc...
En plus, lorsqu'on travaille avec un GIF animé....bon courage ! ;)

Commentaire de sepultura666 le 16/02/2004 12:34:26

Moi j'utilise çà :

$original_size = getimagesize($_FILES['image']['tmp_name']);
$original_larg = $original_size[0];
$original_haut = $original_size[1];

echo "largeur : $original_larg<br>";
echo "longueur : $original_haut<br>";


$acceptedTypes = array('image/jpeg', 'image/jpg', 'image/pjpeg');
if(!in_array($_FILES['image']['type'], $acceptedTypes) || trim($_FILES['image']['tmp_name']) == "" || trim($_FILES['image']['tmp_name']) =="none")
{
echo "format image non valide, image jpeg seulement";
}
else
{ echo "<br>format valide<br>";


$nom_fichier = explode(".", $_FILES['image']['name']);
$nom = str_replace(' ', '_', $nom_fichier[0]);

$img_original = ImageCreateFromJpeg($_FILES['image']['tmp_name']);
$matrix_redim = array ("640","480","160","120");
$nbr = count ($matrix_redim) / 2;

for ($idx = 0; $idx < $nbr; ++$idx)
{
$IMG_LARG = $matrix_redim[$idx*2];
$IMG_HAUT = $matrix_redim[$idx*2+1];

if($original_larg <= $IMG_LARG && $original_haut <= $IMG_HAUT)
{
echo "<font color='#FF9900'><br>l'image n'a pas besoin d'être redimensionnée en $IMG_LARG*$IMG_HAUT</font>";

$img_renamed = "../../imagesprod/$nom" . "_$IMG_LARG.jpg";
ImageJPEG($img_original, $img_renamed);
} else {


$ratio_v = $IMG_LARG / $original_larg;
$ratio_h = $IMG_HAUT / $original_haut;
$ratio = $ratio_v < $ratio_h ? $ratio_v:$ratio_h;
$img_new_larg = round($original_larg * $ratio);
$img_new_haut = round($original_haut * $ratio);
                
echo "<br>redimensionnement en $IMG_LARG*$IMG_HAUT... <br>après redimensionnement : largeur = $img_new_larg ; longueur = $img_new_haut<br>";

$img_resized = imagecreatetruecolor($img_new_larg, $img_new_haut);
imagecopyresampled($img_resized, ImageCreateFromJpeg($_FILES['image']['tmp_name']), 0 , 0 , 0 , 0, $img_new_larg, $img_new_haut, $original_larg, $original_haut);


$nom_imag = "$nom"."_$IMG_LARG.jpg";
Imagejpeg($img_resized, "../../imagesprod/$nom_imag");
ImageDestroy($img_resized);
$img_new_size = filesize("../../imagesprod/$nom_imag");


echo "nom de l'image : $nom_imag<br>poids de la nouvelle image : $img_new_size  octets<br><a href='../../imagesprod/$nom_imag' target='_blank'>lien vers la nouvelle image</a><br>"; }
}

Commentaire de jeepnet le 21/02/2004 15:28:35

Très bon source, ceci dit, ta premiere boucle pour le rapport bof:
pk tu n'a pas fait ca?
    // Si la largeur de l'image est supérieure à la limite
    if ($TImage[0] > $maxX)
$rapport = $TImage[0] / $maxX;

Enfin merci qd meme.

Commentaire de sepultura666 le 21/02/2004 21:20:40

C'est parceque si dans MATRIX tu met d'autre variables en PLUS ben la boucle va automatiquement faire tout les redimentionnement successifs pour y arriver, genre tu veux que quand tu envoye une image en 1280*960 par exemple tu veux conserver une image de 1024x768, une de 800x600 une de 640x480 une de 160x120 et une de 80x60, pour quelles raisons je sais pas mais tu veux le faire... ;-P ben tu met simplement :
$matrix_redim = array ("1024","768","800","600","640","480","160","120","80","60");

et le tour est joué, dans ce cas là tout les redimentionnements vont êtres faits, et l'image en 1280x960 supprimée d'elle même, en plus les images crées auront en extension "_$taille".

voilà le pourquoi du comment... lol

Commentaire de pyroflo le 21/02/2004 21:25:21

Intéressant ;p

Commentaire de sepultura666 le 22/02/2004 10:26:25

Autre truc, le PNG c'est chiant parceque quand tu te sert de la lib php pour créer les fichiers PNG, ben elle détruit la couche alpha, ce qui est génant parfois, et pour le gif c'est aussi des redimentionnement merdiques et de très mauvaise qulaitée, franchement mieux vaut rester sur du JPG...

pour un exemple de galerie, http://www.sepu-design.com/

allez dans la partie productions

voili voilou

Commentaire de yakou32 le 14/03/2004 13:56:34

Excusez-moi, je suis un peu neuneu et je débute... J'aimerais modifier le répertoire de destination des images... Je tente ce code, mais ça ne fonctionne pas (aucun message d'erreur ni de création de miniature...)

            <?php  
$DestinationFolder = "../image-bdd/";
$img = $row_LastPhoto['file'];
$maxX = 1000;
$maxY = 750;

function MakeThumb($img,$maxX,$maxY) {
    
    // Récupération des infos sur l'image
    $TImage = getimagesize($DestinationFolder.$img);
    // Rapport initial: aucune réduction
    $rapport = 1;

    // Si la largeur de l'image est supérieure à la limite
    if ($TImage[0] > $maxX)
        // Tant que la largeur réduite est supérieure à la limite
        while ($TImage[0] / $rapport > $maxX)
            // Augmentation de la réduction
            $rapport = $rapport + 0.5;

    // Assignation de la largeur finale
    $xF = $TImage[0] / $rapport;

    // Si la hauteur de l'image est supérieure à la limite
    // Si non, le rapport est le même que celui utilisé pour la largeur
    if ($TImage[1] > $maxY)
        // Tant que la hauteur réduite est supérieure à la limite
        while ($TImage[1] / $rapport > $maxY)
            // Augmentation de la réduction
            $rapport = $rapport + 0.5;

    // Assignation de la hauteur finale
    $yF = $TImage[1] / $rapport;

    // Récupération du handle de l'image selon son format
    switch($TImage[2]) {
        
        case 1:
        $imageF = imagecreatefromgif($DestinationFolder.$img);
        break;
        
        case 2:
        $imageF = imagecreatefromjpeg($DestinationFolder.$img);
        break;
        
        case 3:
        $imageF = imagecreatefrompng($DestinationFolder.$img);
        break;
    }
    
    // Création de la miniature
    $thumbF = imagecreatetruecolor($xF,$yF);

    // Compatibilité: imagecopyresized($thumbF,$imageF,0,0,0,0,$xF,$yF,$TImage[0],$TImage[1]);
    imagecopyresampled($thumbF,$imageF,0,0,0,0,$xF,$yF,$TImage[0],$TImage[1]);
    
    // Envoie de l'image au navigateur selon son format
    switch($TImage[2]) {
        
        case 1:
        imagegif($thumbF,'../image-bdd/maxi_'.substr($img,strpos($img,'/') + 1), 60);
        break;
        
        case 2:
        imagejpeg($thumbF,'../image-bdd/maxi_'.substr($img,strpos($img,'/') + 1), 60);
        break;
        
        case 3:
        imagepng($thumbF,'../image-bdd/maxi_'.substr($img,strpos($img,'/') + 1), 60);
        break;
    }

    // Libération de la mémoire
    imagedestroy($thumbF);
    imagedestroy($imageF);
}
    ?>
            <?php
unlink("../image-bdd/".$row_LastPhoto['file']);
echo "l'image a originale a été effacée.";
?>

Commentaire de Naixn le 19/04/2004 20:59:14

Mmmgh ... Un grand merci pour cette source qui m'a été utile.
par contre, j'ai eu un problème parceque moi je n'avais pas qu'un seul sous dossier, et ton script n'est fait pour en gérer qu'un car :

> substr($img,strpos($img,'/') + 1)
--> Va chercher la première occurence de "/".

Je te conseille plutôt de metre :

> substr(strrchr($img, "/"), 1)
--> qui va chercher la derniève occurence de "/" et donc supprimer tous le chemin à l'image :)

En tout cas encore merci pour lsa source :)

Commentaire de pyroflo le 20/04/2004 16:32:02

Naixn, t'as raison, je n'avais pas du tout pensé à ce cas de figure :)

Commentaire de fab512 le 07/07/2004 15:51:34

pour ma part, j'utilise ça :
Pour que l'image $addr rentre dans le rectangle de dimension $hauteur, $largeur, en touchant au moins un des bords
<? $image=imagecreatefromjpeg($addr);
$taille=getimagesize($addr);
$ratio=$taille[0]/$taille[1];
if($ratio>1)
{$largeur2=$largeur;
$hauteur2=$largeur/$ratio;}
else
{$hauteur2=$hauteur;
$largeur2=$hauteur/$ratio;}
$image2=imagecreate($largeur2,$hauteur2);
imagecopyresized($image2,$image,0,0,0,0,$largeur2,$hauteur2,$taille[0],$taille[1]);
imagejpeg($image2); ?>
ça tiens en 15 lignes... pourquoi faire une boucle ?

Commentaire de fab512 le 08/07/2004 01:04:13

dsl, je suis un boulet, pas capable de faire un ctrl+c dans le bon fichier... le code ci dessus ne marche que pour les carés, le code pour les rectangles (Pour que l'image $addr rentre dans le rectangle de dimension $hauteur, $largeur, en touchant au moins un des bords) est là :
<?
$image=imagecreatefromjpeg($addr);
$taille=getimagesize($addr);
$ratio=$taille[0]/$taille[1];
$hauteur2=$largeur*$ratio;
$largeur2=$hauteur/$ratio;
if($hauteur2<=$hauteur) $largeur2=$largeur;
else $hauteur2=$hauteur;
$image2=imagecreate($hauteur2,$largeur2);
imagecopyresized($image2,$image,0,0,0,0,$hauteur2,$largeur2,$taille[0],$taille[1]);
imagejpeg($image2);
?>
Vala...

Commentaire de pyroflo le 08/07/2004 01:07:50

Pas très grave :)

Pour les boucles, je pensais pouvoir me rapprocher de la veleur minimale en "tatonnant".

Commentaire de fab512 le 08/07/2004 12:24:54

<font face="fixedsys">
[font name=fixedsys]

Donc voilà en gros ce que je fait:
On donne a la fonction une image :


   Taille[1]
+-----------------+ T
|                 | a
|                 | i
|   image         | l
|                 | l
|                 | e
+-----------------+[0]
    

Maintenant on lui donne un rectangle :
largeur
+--------+
|        | h
|        | a
|        | u
| recta  | t
|  ngle  | e
|        | u
|        | r
|        |
+--------+  

Pour rentre l'image dans ce rectangle, en touchant deux bords, il y'a deux solutions :
Soit que le bord du haut touche le bord du haut, et le bord du bas touche le bord du bas, donc en definisant que la nouvelle image a pour hauteur la hauteur du rectangle, en appliquant le ratio (hauteur/largeur), on obtient la largeur nécéssairepour avoir une image proportionel, si cette valeur est plus grande que la largeur du rectangle.
Si la largeur ainsi définie est plus grande que la largeur du rectangle, on recommence en appliquant ce petit algorythme directement a la largeur
Est ce clair ?
LOL

@+++ tlm              

Commentaire de sepultura666 le 08/07/2004 12:49:53

le code que j'avais mis un peu plus haut contient des boucles pour une seule et bonne raison, si admettons que tu veuilles faire 10 redimentionnement successifs suivant la taille du fichier envoyer, ben tu peux le faire, suffit de mettre dans le array qui contient les taille tes valeurs, comme çà avec unseul script, non seulement tu optimise les images crées, mais en plus tu peux faire x redimentionnements

genre tu envoye une image en 1600x1200 et t veux qu'elle soit redimentionnée en : 1600*1200, 1280*960, 1024*768, 640*480, 576*384, 160*120, 80*60 ben tu met simplement les valeurs dans le array, et le script se charge de tout faire lui même en renommant les fichier suivant cette règle $nom_du_fichier."_".$taille.".jpg";

c'est vachement plus imple nan ???

Commentaire de fab512 le 08/07/2004 12:51:03

vi... en fait tout dépend de ce que tu veux faire :-)

Commentaire de pyroflo le 08/07/2004 13:20:14

Exact, une telle fonction ne peut convenir à tout le monde :)

Commentaire de fab512 le 08/07/2004 13:23:03

vi, perso, je suis entrain de devellopper une galerie photo pour ma petite soeur, et mon voisin, avec une GUI simplifiée, quand j'aurais fini, je la metterais en ligne, pour avoir vos commentaires ;-)

Commentaire de lmaix le 04/08/2005 04:02:50

Salut je me lance à peine dans tout ce qui est retouche d'image et je dois vous dire que je suis tres admiratif de vos travaux et de votre communauté aussi...

Voilà le script de Pyroflo a l'air parfait pour mes besoins, donc merci à lui déjà.
Le seul soucis c'est que j'ai recopié tel quel le code en changeant bien evidement les variables de la fonction MakeThumb en MakeThumb('test.jpg',200,150); mais ca ne marche pas.

Voilà donc rien de bien méchant mais j'ai ce message d'erreur:

Warning: imagejpeg(): Unable to open 'images/mini_est.jpg' for writing in /home/www/image.php on line 46


Bon je débute donc excusez moi si je vous fait répeter. De plus j'ai fait un phpinfo(); j'ai GD2 donc je comprends pas.

Merci d'avance

Commentaire de lmaix le 04/08/2005 11:28:18

C'est bon j'ai rien dit... oubli du CHMOD !!! Alala il était tard aussi. Désolé et bravo encore.

Commentaire de speedylol le 28/10/2005 12:49:53

Comment fait tu ton appel au telechargement de l'image please???

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,998 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales