Création de miniatures d'images dont la hauteur et largeur maximale sont fixées

ViPHP
AB
ViPHP | 5818 Messages

20 oct. 2008, 20:39

Oui c'est possible : menu fichier->automatisation->traitement par lots.

La manip est plus simple à faire avec Fireworks par exemple, mais bon si tu as Photoshop ça te fera l'occasion d'apprendre une fonctionnalité de plus. Et si tu ne trouve pas facilement il devrait bien y avoir quelques tutos à ce sujet sur google :wink:

Eléphant du PHP | 117 Messages

20 oct. 2008, 20:47

La boite dans laquel je bosse a fireworks, quelle est la manipulation à effectuer ?

ViPHP
AB
ViPHP | 5818 Messages

20 oct. 2008, 21:18

menu Fichiers -> traitement par lots. Tu ouvres le dossier contenant tes images, tu cliques sur "ajouter tout" (ou tu choisi tes fichiers un par un) ensuite sur "suivant".
A l'étape suivante tu ajoutes "echelle" et tu choisi "mise à l'échelle de la zone" en rentrant tes paramètres, puis (toujours dans cette même étape) tu ajoutes "exporter" et tu choisis "jpeg qualité supérieure" (tu peux éditer le profil)
et enfin tu passes à l'étape finale pour choisir la destination des enregistrements.

On peut guère faire plus simple.

Eléphant du PHP | 117 Messages

20 oct. 2008, 21:27

Merci, je test ça demain.

Mammouth du PHP | 804 Messages

20 oct. 2008, 23:34

Bonsoir

utilise plutôt l'option album photo de dream :wink:


dog

x@v
Mammouth du PHP | 570 Messages

29 oct. 2008, 16:49

$t_image_p = imagecreatetruecolor($t_width, $t_height);
        $t_quality = 80;
        switch($extension)
        {
            case 'jpeg':
            case 'jpg':
                $t_image = imagecreatefromjpeg($fileTmpPath);
                imagecopyresampled($t_image_p, $t_image, 0, 0, 0, 0, $t_width, $t_height, $width_orig, $height_orig);
                imagejpeg($t_image_p, $t_filePath, $t_quality);
            break;
            case 'png':
                $t_image = imagecreatefrompng($fileTmpPath);
                imagecopyresampled($t_image_p, $t_image, 0, 0, 0, 0, $t_width, $t_height, $width_orig, $height_orig);
                imagepng($t_image_p, $t_filePath, $t_quality);
            break;
            case 'gif':
                $image = imagecreatefromgif($fileTmpPath);
                imagecopyresampled($t_image_p, $t_image, 0, 0, 0, 0, $t_width, $t_height, $width_orig, $height_orig);
                imagegif($t_image_p, $t_filePath, $t_quality);
            break;
        } 
Cette solution est sympas sur le papier mais en terme de ressource imagecopyresampled() est une des fonction qui fait le plus de calcul, suicidaire pour l'affichage d'une page.
imagecreatetruecolor() ne fonctionne pas avec le format GIF.
http://fr.php.net/manual/fr/function.im ... ecolor.php
Une solution médianne est nécessaire

ViPHP
AB
ViPHP | 5818 Messages

30 oct. 2008, 21:01

$t_image_p = imagecreatetruecolor($t_width, $t_height);
        $t_quality = 80;
        switch($extension)
        {
            case 'jpeg':
            case 'jpg':
                $t_image = imagecreatefromjpeg($fileTmpPath);
                imagecopyresampled($t_image_p, $t_image, 0, 0, 0, 0, $t_width, $t_height, $width_orig, $height_orig);
                imagejpeg($t_image_p, $t_filePath, $t_quality);
            break;
            case 'png':
                $t_image = imagecreatefrompng($fileTmpPath);
                imagecopyresampled($t_image_p, $t_image, 0, 0, 0, 0, $t_width, $t_height, $width_orig, $height_orig);
                imagepng($t_image_p, $t_filePath, $t_quality);
            break;
            case 'gif':
                $image = imagecreatefromgif($fileTmpPath);
                imagecopyresampled($t_image_p, $t_image, 0, 0, 0, 0, $t_width, $t_height, $width_orig, $height_orig);
                imagegif($t_image_p, $t_filePath, $t_quality);
            break;
        } 
Cette solution est sympas sur le papier mais en terme de ressource imagecopyresampled() est une des fonction qui fait le plus de calcul, suicidaire pour l'affichage d'une page.
imagecreatetruecolor() ne fonctionne pas avec le format GIF.
http://fr.php.net/manual/fr/function.im ... ecolor.php
Une solution médianne est nécessaire
Tu as oublié que c'était uniquement lors de l'upload ? Et puis il est impossible (sinon je demande à voir comment) de faire du redimensionnement d'image avec une qualité correcte sans utiliser imagecopyresampled().

Donc à quelques détails près c'est du code standard pour de l'upload. Sinon effectivement il y a un souci pour le format GIF. Mais comme il s'agit de redimensionner des photos, supprimer cette case ne devrait pas poser de pb.

x@v
Mammouth du PHP | 570 Messages

30 oct. 2008, 22:59

je pensais plutôt à enregistrer les miniatures dans undossier, pour ne pas les afficher et faire des traitement s inutules.

Petit nouveau ! | 9 Messages

04 nov. 2008, 23:51

Ben oui mais tu es bien obligé de les redimensionner à un moment ou un autre.

imagecopyresampled() est la meilleure solution pour le php. Mais effectivement c'est pas super leger au niveau de la conso de ressource...

Eléphant du PHP | 121 Messages

05 nov. 2008, 23:13

Si je peux me permettre, j'ai crée une classe qui pourrait t'aider dans ta quête :

Une classe et sept méthodes pour créer des miniatures en PHP

Exemple d'utilisation :
<?php

function fill_callback($image, $w, $h)
{
    WdImage::drawGrid
    (
        $image, 0, 0, $w - 1, $h - 1
    );
}

$thumbnail = WdImage::resize
(
    $source,
            
    $target_width,
    $target_height,
            
    WdImage::RESIZE_SCALE_MAX,

    'fill_callback'
);

?>
Qui donne un truc du genre (avec trois images témoins) :

Image

Il y a sept méthodes de redimensionnement, tu trouveras peut-être ton bonheur.

++