begin process at 2012 05 31 19:35:47
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Débutant(e)

 > 

Vignettes d'images


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Vignettes d'images

dimanche 28 mai 2006 à 04:58:19 | Vignettes d'images

jnbdzjnbdz

Salut, sa fait 4 heures de temps que je gosses apprais ce code:

function imageResize ($fichier_dossier, $fileName, $KEEP_PROPORTIONS) {
    $aProportions = array ('DO_NOT_KEEP_PROPORTIONS', 'KEEP_PROPORTIONS_ON_WIDTH', 'KEEP_PROPORTIONS_ON_HEIGHT', 'KEEP_PROPORTIONS_ON_BIGGEST', 'KEEP_PROPORTIONS_ON_SMALLEST');
    if (!file_exists ($fileName) || !is_array ($KEEP_PROPORTIONS) || empty ($KEEP_PROPORTIONS)) {
        return false;
    } else {
        $aImg = @getimagesize ($fileName);
        if (false === $aImg) {
            return false;
        } else {
            $aTypes = array (1 => 'gif', 2 => 'jpeg', 3 => 'png');
            if (!in_array ($aImg[2], array_keys ($aTypes))) {
                return false;
            } else {
                if (!in_array ($KEEP_PROPORTIONS[0], $aProportions)) {
                    return false;
                }
                $iCmpt = count ($KEEP_PROPORTIONS);
                if (!empty ($KEEP_PROPORTIONS) && is_array ($KEEP_PROPORTIONS) && ($iCmpt >= 2) && is_int ($KEEP_PROPORTIONS[1])) {
                    switch ($KEEP_PROPORTIONS[0]) {
                        case 'KEEP_PROPORTIONS_ON_WIDTH' :
                            $width = $KEEP_PROPORTIONS[1];
                            $height = round ($aImg[1] / (round ($aImg[0]/$KEEP_PROPORTIONS[1])));
                            break;
                        case 'KEEP_PROPORTIONS_ON_HEIGHT' :
                            $height = $KEEP_PROPORTIONS[1];
                            $width = round ($aImg[0]/ (round ($aImg[1]/$KEEP_PROPORTIONS[1])));
                            break;
                        case 'KEEP_PROPORTIONS_ON_BIGGEST' :
                            if ($aImg[0] >= $aImg[1]) {
                                $width = $KEEP_PROPORTIONS[1];
                                $height = round ($aImg[1] / (round ($aImg[0]/$KEEP_PROPORTIONS[1])));
                            } else {
                                $height = $KEEP_PROPORTIONS[1];
                                $width = round ($aImg[0] / (round ($aImg[1]/$KEEP_PROPORTIONS[1])));
                            }
                            break;
                        case 'KEEP_PROPORTIONS_ON_SMALLEST' :
                            if ($aImg[0] <= $aImg[1]) {
                                $width = $KEEP_PROPORTIONS[1];
                                $height = round ($aImg[1] / (round ($aImg[0]/$KEEP_PROPORTIONS[1])));
                            } else {
                                $height = $KEEP_PROPORTIONS[1];
                                $width = round ($aImg[0] / (round ($aImg[1]/$KEEP_PROPORTIONS[1])));
                            }
                            break;
                        case 'DO_NOT_KEEP_PROPORTIONS':
                            if ($iCmpt !== 3 || !is_int ($KEEP_PROPORTIONS[2])) {
                                return false;
                            }
                            $width = $KEEP_PROPORTIONS[1];
                            $height = $KEEP_PROPORTIONS[2];
                            break;
                    }
                }
                $getImg = create_function ('$fileName', 'return @imagecreatefrom'.$aTypes[$aImg[2]].'($fileName);');
                $im = $getImg ($fileName);
                $image_p = imagecreatetruecolor($width, $height);
                imagecopyresampled($image_p, $im, 0, 0, 0, 0, $width, $height, $aImg[0], $aImg[1]);
                $saveImg = create_function ('$img, $fileName', 'return @image'.$aTypes[$aImg[2]].'($img, $fichier_dossier.$fileName);');
                if ($saveImg ($image_p, $fileName)) {
                    return true;
                } else {
                    return false;
                }
            }
        }
    }
}
imageResize ('thumbnails','eoliennbnes.jpg', array ('DO_NOT_KEEP_PROPORTIONS', 100, 100));

Sa marche pour créé des vignettes mais je peu pas les enregistre ou je veux, j'ai essayer en rajoutent "$fichier_dossier." et sa marche pas.

merci en avance si vous trouvez mon erreure.
dimanche 28 mai 2006 à 11:43:49 | Re : Vignettes d'images

J_G

Salut,


Ben genre, si tu fais imagepng($image_resource, 'fichier_sauve.png'); ça devrait le faire...

Non ?

dimanche 28 mai 2006 à 16:20:58 | Re : Vignettes d'images

jnbdzjnbdz

Oui, je peu changer le nom de l'image qui se fait enregistrer, mais moi je veu qu'il s'enregistre dans un autre dossier.

Merci quand même.
dimanche 28 mai 2006 à 17:13:39 | Re : Vignettes d'images

J_G

?

imagepng( $image_resource, '/un/autre/dossier/../meme/relatif/image.png'):
dimanche 28 mai 2006 à 17:19:24 | Re : Vignettes d'images

jnbdzjnbdz

$fichier_dossier.$fileName);');

Je les fait ici mais sa marche juste pas. Essaye le code de ton coter. C'est peut-être moi.

Merci pour ton aide.
dimanche 28 mai 2006 à 18:06:17 | Re : Vignettes d'images

malalam

Administrateur CodeS-SourceS
Réponse acceptée !
Tien, mon code...

$saveImg = create_function ('$img, $fileName', 'return @image'.$aTypes[$aImg[2]].'($img, $fichier_dossier.$fileName);');

tu mets quoi dans fichier_dossier ? et n'oublie pas les chemins relatifs/absolus, comme te le suggère J_G.

Et puis...là, faut voir...
$saveImg = create_function ('$img, $fileName', 'return @image'.$aTypes[$aImg[2]].'($img, $fichier_dossier.$fileName);');
                if ($saveImg ($image_p, $fileName))

Mais je crée une fonction...si tu lis bien. On passe 2 arguments à cette fonction. $img et $fileName. Ce ne sont pas les mêmes que ceux de la fonction de départ!! Je les passe, ce sont de nouvelles variables. Pour utiliser une variable "globale" connue de ma fonction première, je la concatène :
'return @image'.$aTypes[$aImg[2]].'...
Mais je ne concatène ni $img, ni $fileName.
La fonction créée va utiliser celles quiu lui sont passées en argument. Mais tu ne passes pas $fichier_dossier...! Donc cette fonction dynamique ne connais pas cette fonction.
Bref :
$saveImg = create_function ('$img, $fileName, $fichier_dossier', 'return @image'.$aTypes[$aImg[2]].'($img, $fichier_dossier.$fileName);');
                if ($saveImg ($image_p, $fileName, $fichier_dossier))

ca devrait le faire.
dimanche 28 mai 2006 à 18:30:35 | Re : Vignettes d'images

jnbdzjnbdz

Sa vas pas l'enregistrer dans le dossier thumbnails sa l'enregistre dans le même dossier que l'image originale et sa change son nom.

de Eolienne.jpg

a thumbnailsEolienne.jpg

mais moi je veux qu'il garde son nom originale mais qu'il senregistre dans le dossier thumbnails.

Merci, de votre aide.
dimanche 28 mai 2006 à 18:33:21 | Re : Vignettes d'images

malalam

Administrateur CodeS-SourceS
Je viens de t'expliquer.
A toi de passer les bons paramètres après cette modification.
dimanche 28 mai 2006 à 18:33:53 | Re : Vignettes d'images

jnbdzjnbdz

Réponse acceptée !
Sa marche c'est de ma faute j'ai aublier le \.
Voici le code:
<?php
function imageResize ($fichier_dossier, $fileName, $KEEP_PROPORTIONS) {
    $aProportions = array ('DO_NOT_KEEP_PROPORTIONS', 'KEEP_PROPORTIONS_ON_WIDTH', 'KEEP_PROPORTIONS_ON_HEIGHT', 'KEEP_PROPORTIONS_ON_BIGGEST', 'KEEP_PROPORTIONS_ON_SMALLEST');
    if (!file_exists ($fileName) || !is_array ($KEEP_PROPORTIONS) || empty ($KEEP_PROPORTIONS)) {
        return false;
    } else {
        $aImg = @getimagesize ($fileName);
        if (false === $aImg) {
            return false;
        } else {
            $aTypes = array (1 => 'gif', 2 => 'jpeg', 3 => 'png');
            if (!in_array ($aImg[2], array_keys ($aTypes))) {
                return false;
            } else {
                if (!in_array ($KEEP_PROPORTIONS[0], $aProportions)) {
                    return false;
                }
                $iCmpt = count ($KEEP_PROPORTIONS);
                if (!empty ($KEEP_PROPORTIONS) && is_array ($KEEP_PROPORTIONS) && ($iCmpt >= 2) && is_int ($KEEP_PROPORTIONS[1])) {
                    switch ($KEEP_PROPORTIONS[0]) {
                        case 'KEEP_PROPORTIONS_ON_WIDTH' :
                            $width = $KEEP_PROPORTIONS[1];
                            $height = round ($aImg[1] / (round ($aImg[0]/$KEEP_PROPORTIONS[1])));
                            break;
                        case 'KEEP_PROPORTIONS_ON_HEIGHT' :
                            $height = $KEEP_PROPORTIONS[1];
                            $width = round ($aImg[0]/ (round ($aImg[1]/$KEEP_PROPORTIONS[1])));
                            break;
                        case 'KEEP_PROPORTIONS_ON_BIGGEST' :
                            if ($aImg[0] >= $aImg[1]) {
                                $width = $KEEP_PROPORTIONS[1];
                                $height = round ($aImg[1] / (round ($aImg[0]/$KEEP_PROPORTIONS[1])));
                            } else {
                                $height = $KEEP_PROPORTIONS[1];
                                $width = round ($aImg[0] / (round ($aImg[1]/$KEEP_PROPORTIONS[1])));
                            }
                            break;
                        case 'KEEP_PROPORTIONS_ON_SMALLEST' :
                            if ($aImg[0] <= $aImg[1]) {
                                $width = $KEEP_PROPORTIONS[1];
                                $height = round ($aImg[1] / (round ($aImg[0]/$KEEP_PROPORTIONS[1])));
                            } else {
                                $height = $KEEP_PROPORTIONS[1];
                                $width = round ($aImg[0] / (round ($aImg[1]/$KEEP_PROPORTIONS[1])));
                            }
                            break;
                        case 'DO_NOT_KEEP_PROPORTIONS':
                            if ($iCmpt !== 3 || !is_int ($KEEP_PROPORTIONS[2])) {
                                return false;
                            }
                            $width = $KEEP_PROPORTIONS[1];
                            $height = $KEEP_PROPORTIONS[2];
                            break;
                    }
                }
                $getImg = create_function ('$fileName', 'return @imagecreatefrom'.$aTypes[$aImg[2]].'($fileName);');
                $im = $getImg ($fileName);
                $image_p = imagecreatetruecolor($width, $height);
                imagecopyresampled($image_p, $im, 0, 0, 0, 0, $width, $height, $aImg[0], $aImg[1]);
                $saveImg = create_function ('$img, $fileName, $fichier_dossier', 'return @image'.$aTypes[$aImg[2]].'($img, $fichier_dossier.$fileName);');
                if ($saveImg ($image_p, $fileName, $fichier_dossier)) {
                    return true;
                } else {
                    return false;
                }
            }
        }
    }
}
imageResize ('thumbnails\ ','Eolienne.jpg', array ('DO_NOT_KEEP_PROPORTIONS', 100, 100));
?>

A être distribuer.

Merci beaucoup. A+
dimanche 28 mai 2006 à 18:35:43 | Re : Vignettes d'images

jnbdzjnbdz

Questions rapide. J'aimerais aprendre commen utiliser le GD library de php quelle documentation me recomende tu ou tutorial.

Merci, encore A+.

1 2

Cette discussion est classée dans : width, round, keep, proportions, aimg


Répondre à ce message

Sujets en rapport avec ce message

esayphp 1.6 à 1.7 a l'aide!! [ par jonguignolo ] j'ai un gros soucisje suis passé de easyphp1.6 a 1.7...j'ai lu pas mal d'article sur les bugs qui apparaissent suite a l'instalation du 1.7 mais la je Gardé les proportions au redimenssionement [ par zzzzzz ] Salut j'aiquelques problemes avec les redimenssionements genre quand on redimenssione la fenetre les menus garde les proportions et ne reste pas figé formulaire et javascript [ par arnold002 ] Bonjour à tous,Je sais que ce n'est pas tellement l'endroit pour poser ce genre de question, mais il n'y a que sur ce forum que l'on me réponds.J'envo feuilles de style et Mac [ par c_hippo ] Bonjour,J'ai une page qui marche très bien sous Windows (IE 6.0) mais qui fonctionne plus très bien sous Mac (IE 5.0) !En fait j'ai un bloc 'profile'  Problème avec createimagefromjpeg et thumnails [ par j_claude05 ] Salut à tous je viens à vous après de longues heures la tête dans le code et à vrai dire à l'heure ou j'ecris je vois plus rien :-( Bon bref plus sér WIDTH='$variable%' [ par xactise ] Bonjour j'aimerai afficher une image donc la largeur est egale a une variable : exemple : $variable = 50;Mais sa ne fonctionne pas :Saussi une autre q Affichage résultat requête [ par wynelle ] Bonjour à tous,Je cherche à afficher les résultats d'une requête sur la forme d'un tableau avec 4 résultats par lignes.Malheureusement, ... et je comm Image !! [ par Dfx4 ] Bonjour, j'ai petit problème avec les images, certain images qui viennent de MMS ne fonctionnne pas, cela me rend un carré noir !! Il copie pas l'ima retour à la ligne [ par refkaben ] bonjour tout le monde.J'ai un problème d'affichage d'une cellule.             &nbs probleme d'affichage [ par dededo ] bonjour a tousj'ai un code php pour redimensionner les images jpg, je l'ai utilisé avec succes avec l'hebergeur Alice. J'ai changé d'hebergeur "1and1"


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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 : 1,373 sec (3)

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