Как сделать изменение размера и изменение цвета PNG изображения в PHP GD - PullRequest
0 голосов
/ 08 марта 2011
<?php
createImage(50,50, 0,0, 255);
function createImage($width, $height, $nR, $nG, $nB)
{
$image = imagecreatefrompng("source.png");
imagealphablending($image, false);  
imagesavealpha($image, true);       

      //resize the image
      $new_image = imagecreatetruecolor($width, $height);
      imagealphablending($new_image, false); 
      imagesavealpha($new_image, true);
      imagecopyresampled($new_image, $image, 0, 0, 0, 0, $width, $height, imagesx($image), imagesx($image));

    //colorize the image
        $nrgb = str_pad(dechex($nR), 2, '0', STR_PAD_LEFT). str_pad(dechex($nG), 2, '0', STR_PAD_LEFT). str_pad(dechex($nB), 2, '0', STR_PAD_LEFT);              

       $newColor = $nrgb;

        $c2 = sscanf($newColor ,"%2x%2x%2x");

        for($i=0;$i<$width;$i++)
        {
            for($j=0;$j<$height;$j++)
            {
             $cIndex = imagecolorat($new_image,$i,$j);

             imagecolorset($new_image,$cIndex,$c2[0],$c2[1],$c2[2]);
            }
        }

        header("Content-Type: image/png");

        imagepng($new_image,"test.png");
}
?>

1 Ответ

0 голосов
/ 08 марта 2011

Здесь нет экспертов ... до сих пор после одного месяца исследований и усердных исследований я нашел ответ на вышеприведенное решение ... всего пару минут назад ... мы должны использовать функцию imagecreate вместо imagecreatetruecolor. ... функция coz trucolor генерирует 32-битное PNG-изображение ... мы не можем раскрасить 32-битное изображение с помощью функции imagecolorset ... как это сложно .... смеется ... спасибо за поддержку crayon ...

...