Как раскрасить изображение результата PHP с помощью GD - PullRequest
1 голос
/ 08 марта 2011

У меня есть код, который изменяет размеры и раскрашивает изображение соответственно входным значениям ... проблема в том, что я могу раскрасить только один раз свежим изображением, сохраненным другим приложением .. Пожалуйста, помогите мне .. Я надеюсь, что есть много PHPexpers здесь .....

<?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");
}
?>

Ответы [ 2 ]

0 голосов
/ 10 ноября 2011

Я предлагаю посмотреть на функцию фильтра изображений, найденную здесь: http://php.net/manual/en/function.imagefilter.php

Посмотрите на IMG_FILTER_COLORIZE на этой странице.

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

Звучит так, будто вы манипулируете ресурсом изображения и выводите его, а затем хотите вернуться и продолжить манипулировать им, не начиная заново.Вы можете сделать это с помощью

a) сохранить ресурс изображения как переменную сеанса, а затем использовать переменную сеанса в последующих изменениях.

b) сохранить измененное изображение перед его выводом, а затемоткройте сохраненное измененное изображение и перейдите оттуда.Я не знаю, какой тип файла вы используете, но, например, для изображений gif ваш код должен использовать imagegif () для вывода изображения.Вы можете использовать эту же функцию (или другую эквивалентную функцию типа изображения) для сохранения изображения.

...