Bonjour,
J'ai présentement un script qui me permet d'uploader des images dans une base de données.
L'upload des images se fait bien avec les .gif, seulement lorsque j'essaie avec des .jpg, les couleurs de l'image changent au complet.
Voici le script:
class thumb
{
var $errWidthImg;
var $errHeightImg;
var $saveDir;
var $saveImg;
var $errReturn;
var $cPercent;
var $fontSize;
var $bgRGBColor;
var $msgRGBColo;
function setErr($msg,$offset)
{
if($this->saveImg) $this->errReturn=true;
else
{
$bgRGBColor=$this->bgRGBColor;
$msgRGBColor=$this->msgRGBColor;
$im = @imagecreate ($this->errWidthImg, $this->errHeightImg);
$bgColor = imagecolorallocate ($im, $bgRGBColor[0], $bgRGBColor[1], $bgRGBColor[2]);
$msgColor = imagecolorallocate ($im, $msgRGBColor[0], $msgRGBColor[1], $msgRGBColor[2]);
imagefilledrectangle ($im, 0, 0, 90, 70, $bgColor);
imagestring ($im, $this->fontSize, $offset, 28, $msg, $msgColor);
header ("Content-type: image/jpeg");
imagejpeg ($im,'',$this->cPercent);
imagedestroy ($im);
return false;
}
}
function resized($gdver,$src,$saveName,$desiredw,$desiredh)
{
if(!$desiredw||!$desiredh)
$this->setErr("WIDTH|HIGHT ERR",6);
$gdarr=array(1,2);
for($i=0;$i<count($gdarr);$i++)
{
if($gdver!=$gdarr[$i])
$test.="|";
}
$exp=explode("|",$test);
(count($exp)==3)?$this->setErr("GD VER NOT FOUND",5):"";
$size = @getimagesize($src);
if (!$size)
{
$this->setErr("SRC ERR",30);
if($this->errReturn) return false;
}
else
{
(is_string($this->saveImg))?$this->setErr("VAR ERR",30):"";
($this->saveImg&&!isset($this->saveDir))?$this->setErr("VAR ERR",30):"";
if ($size[0]>=$size[1]*((float)($desiredw/$desiredh)))
{
$newy = round(($size[1] * (float)($desiredw/$size[0])),0);
$newx = $desiredw;
}
else
{
$newy = $desiredh;
$newx = round(($size[0] * (float)($desiredh/$size[1])),0);
}
($gdver==1)?$destimg = @imagecreate($newx, $newy ) or die("GD ERR"):$destimg = @imagecreatetruecolor($newx, $newy ) or $this->setErr("GD2 ERR",30);
if($this->errReturn) return false;
if ($size[2]==1)
{
$sourceimg = imagecreatefromgif ($src);
($gdver==1)?imagecopyresized($destimg, $sourceimg, 0,0,0,0, $newx, $newy, $size[0], $size[1]):@imagecopyresampled($destimg, $sourceimg, 0,0,0,0, $newx, $newy, $size[0], $size[1]);
header("content-type: image/gif");
($this->saveImg)?imagegif($destimg,$this->saveDir."/".$saveName,100):imagegif($destimg,'',$this->cPercent);
return true;
}
elseif ($size[2]==2)
{
$sourceimg = imagecreatefromjpeg ($src);
($gdver==1)?imagecopyresized($destimg, $sourceimg, 0,0,0,0, $newx, $newy, $size[0], $size[1]):@imagecopyresampled($destimg, $sourceimg, 0,0,0,0, $newx, $newy, $size[0], $size[1]);
header("content-type: image/jpeg");
($this->saveImg)?imagejpeg($destimg,$this->saveDir."/".$saveName,100):imagejpeg($destimg,'',$this->cPercent);
return true;
}
elseif ($size[2]==3)
{
$sourceimg = imagecreatefrompng ($src);
($gdver==1)?imagecopyresized($destimg, $sourceimg, 0,0,0,0, $newx, $newy, $size[0], $size[1]):@imagecopyresampled($destimg, $sourceimg, 0,0,0,0, $newx, $newy, $size[0], $size[1]);
header("content-type: image/png");
($this->saveImg)?imagepng($destimg,$this->saveDir."/".$saveName,100):imagepng($destimg,'',$this->cPercent);
return true;
}
else
$this->setErr("TYPE ERR",30);
}
imagedestroy($destimg);
imagedestroy($sourceimg);
}
}
Est-ce que ca pourrait avoir rapport avec la version du GD???
Merci d'avance!
Chuck
Partager