Portail PHP

Forum de discussion et d'aide au php

Vous n'êtes pas identifié.

Annonce

Regles d'utilisation des forums : pensez à toujours les respecter si vous désirez obtenir des réponses rapides.
FAQ : pensez à toujours chercher dedans si la réponse à votre question est dedans.
Proposez vos news : si vous avez un evenement à annoncer
le chat : venez discuter de php.
 

#1 14-12-2004 04:40:51

kazhar
Ex-Webmaster
Lieu: Orléans
Date d'inscription: 25-06-2004
Messages: 3381
Site web

Créer une vignette à partir d'une image

Cette fonction permet la création d'une vignette à partir d'une image jpg, gif ou png.
si la hauteur n'est pas precisée, il la prendra proportionnelle à la hauteur d'origine.

Code:

<?php
function vignette($img, $img_dest, $width=80, $height=0) {
$size = GetImageSize($img);
$src_w = $size[0];
$src_h = $size[1];
if ($height == 0) { $height = ($src_h / $src_w) * $width; }
$ext = explode(".", $img);
$ext = $ext['1'];
$dst_im = ImageCreateTrueColor($width,$height);
      
      if ($ext == 'jpg' or $ext == 'jpeg' or $ext == 'JPG' or $ext == 'JPEG') {
      $src_im = ImageCreateFromJpeg($img);
      }
      elseif ($ext == 'gif') {
      $src_im = ImageCreateFromGif($img);
      }
      elseif ($ext == 'png') {
      $src_im = ImageCreateFromPng($img);
      }
      ImageCopyResampled($dst_im,$src_im,0,0,0,0,$width,$height,$src_w,$src_h);

      if ($ext == 'jpg' or $ext == 'jpeg' or $ext == 'JPG' or $ext == 'JPEG') {
      ImageJpeg($dst_im,$img_dest);
      }
      elseif ($ext == 'gif') {
      ImageGif($dst_im,$img_dest);
      }
      elseif ($ext == 'png') {
      ImagePng($dst_im,$img_dest);
      }
      ImageDestroy($dst_im);
}
?>

$img est l'adresse (locale)  de l'image d'origine
$img_dest est l'adresse (locale)  de la future vignette
$width est la largeur
$height est la hauteur

si $height pas défini, ou défini à 0, il le définit par rapport à $width afin de garder les proportions

Hors ligne

 

#2 11-01-2006 12:56:32

kazhar
Ex-Webmaster
Lieu: Orléans
Date d'inscription: 25-06-2004
Messages: 3381
Site web

Re: Créer une vignette à partir d'une image

je vous propose aujourd'hui une seconde version.
cette fois ci, la largeur et hauteur définis seront la largeur et hauteur maximum.
une image plus petite que la hauteur ou largeur définie gardera les memes proportions

Code:

function vignette($img, $img_dest, $width=0, $height=0) {
    $size = GetImageSize($img);
    $src_w = $size[0];
    $src_h = $size[1];

    if ($width != 0 | $height != 0) {
        if ($src_w > $width | $src_h > $height) {
            if ($src_w > $src_h && $width != 0) {
                //On retrecit la largeur
                $height = ceil(($src_h / $src_w) * $width);
            } elseif($src_h > $src_w && $height != 0) {
                //On retrecit la hauteur
                $width = ceil(($src_w / $src_h) * $height);
            }
        } else {
            $width = $src_w;
            $height = $src_h;
        }    
    } else {
        $width = $src_w;
        $height = $src_h;    
    }

    $ext = explode(".", $img);
    $ext = $ext['1'];
    $dst_im = ImageCreateTrueColor($width,$height);
    $trans_color = imagecolorallocate($dst_im, 255, 0, 0);
    if (!$dst_im) { return 0; }
          
          if ($ext == 'jpg' or $ext == 'jpeg' or $ext == 'JPG' or $ext == 'JPEG') {
              $src_im = ImageCreateFromJpeg($img);
          } elseif ($ext == 'gif') {
              $src_im = imagecolortransparent($dst_im, $trans_color);
              $src_im = ImageCreateFromGif($img);
          } elseif ($ext == 'png') {
              $src_im = ImageCreateFromPng($img);
          } else { return 0; }
          
          if (!$src_im) { return 0; }
          ImageCopyResampled($dst_im,$src_im,0,0,0,0,$width,$height,$src_w,$src_h);
    
          if ($ext == 'jpg' or $ext == 'jpeg' or $ext == 'JPG' or $ext == 'JPEG') {
              ImageJpeg($dst_im,$img_dest);
          } elseif ($ext == 'gif') {
              ImageGif($dst_im,$img_dest);
          } elseif ($ext == 'png') {
              ImagePng($dst_im,$img_dest);
          } else { return 0; }
          
          ImageDestroy($dst_im);
          return 1;
}

Hors ligne