17
février
2007
Petits rappels concernant GD
février
2007
Un article de doctorrock
Pas de commentaires
Voici tout d’abord un extrait de code :
<?php
if (FALSE == ($_FILES['im']['error'] | $_FILES['wm']['error']) ) // les fichiers attendus ont bien été uploadés
{
$fileName = 'test';
$appendedPath = 'upload/images/';
$uploadedImage = new Image($_FILES['im']['tmp_name']);
$uploadedImage->resize((int)$_POST['width'],(int)$_POST['height']);
$watermark = new Image($_FILES['wm']['tmp_name']);
$transformer = new ImageTransformer();
$transformer->addImage('original',$uploadedImage);
$transformer->addImage('watermark',$watermark);
$transformer->fusionne('original','watermark');
$uploadedImage->saveToFormat($appendedPath.$fileName,100,'jpg');
header("content-type:image/jpg");
readfile($appendedPath.$fileName.'.jpg');
}
?>
if (FALSE == ($_FILES['im']['error'] | $_FILES['wm']['error']) ) // les fichiers attendus ont bien été uploadés
{
$fileName = 'test';
$appendedPath = 'upload/images/';
$uploadedImage = new Image($_FILES['im']['tmp_name']);
$uploadedImage->resize((int)$_POST['width'],(int)$_POST['height']);
$watermark = new Image($_FILES['wm']['tmp_name']);
$transformer = new ImageTransformer();
$transformer->addImage('original',$uploadedImage);
$transformer->addImage('watermark',$watermark);
$transformer->fusionne('original','watermark');
$uploadedImage->saveToFormat($appendedPath.$fileName,100,'jpg');
header("content-type:image/jpg");
readfile($appendedPath.$fileName.'.jpg');
}
?>
Script tout simple, on envoie une image, on envoie des dimensions ( on resize cette image ), on envoie un watermark, et on place le watermark dans l’angle en bas à droite de l’image.
Ca parait simple, mais en réalité, il y a tout un tat d’astuces concernant notamment la transparence, le canal alpha, le PNG, le GIF, les couleurs vraies, le paletted , je m’arrete là
Ce qu’il faut retenir :
- le PNG 24 est loadé en TrueColor, mais le GIF n’a par définition pas d’équivalence au delà de 256 couleurs, il est donc loadé en palette.
- imagecopymerge() ne fonctionne pas avec le PNG24, car il ne semble pas traité correctement le canal alpha, il en résulte tout, sauf que qu’on cherche. En revanche, il fonctionne bien avec le paletted, donc le GIF, ou le PNG 8bits.
- imagecopy(), lui, en revanche, fonctionne très bien, quelquesoit le type d’image traité, mais on perd le facteur de fusion de merge()
- Avant un éventuel resize d’une image PNG24, il faut passer ImageAlphaBlending() à false, si on veut utiliser le canal alpha par la suite, ImageAlphaBlending() sert à modifier la gestion du canal alpha de l’image concernée, en le passant à false, on indique à GD que l’on souhaite conserver l’alpha sur un canal séparé, et non le mixer avec la couleur.
De quoi passer presque une nuit blanche hein
Commentaires récents
Archives
- novembre 2010
- août 2010
- juillet 2010
- juin 2010
- mai 2010
- avril 2010
- mars 2010
- février 2010
- janvier 2010
- décembre 2009
- novembre 2009
- octobre 2009
- septembre 2009
- août 2009
- juillet 2009
- juin 2009
- mai 2009
- avril 2009
- mars 2009
- février 2009
- janvier 2009
- décembre 2008
- novembre 2008
- octobre 2008
- septembre 2008
- août 2008
- juillet 2008
- juin 2008
- mai 2008
- avril 2008
- mars 2008
- février 2008
- janvier 2008
- décembre 2007
- novembre 2007
- octobre 2007
- septembre 2007
- août 2007
- juillet 2007
- juin 2007
- mai 2007
- avril 2007
- mars 2007
- février 2007