admin22.09.2015 12:19

Делаем цветную картинку черно-белой

Как в php можно из цветной картинки сделать черно-белую с помощью библиотеки GD.

Ни чего сложного в создании черно-белого изображения нет — создаем пустое изображение с размером, равному исходному(цветному) и задаем серую палитру. Потом накладываем цветную картинку на холст, с серой палитрой. И сохраняем результат.

<?php
    function makeGrayPic($filename, $resultName){
      // получаем размеры исходного изображения
      $imgSize = getimagesize($filename);
      $width = $imgSize[0];
      $height = $imgSize[1];
      // создаем новое изображение
      $img = imageCreate($width,$height);
      // задаем серую палитру для нового изображения
      for ($color = 0; $color <= 255; $color++) {
        imageColorAllocate($img, $color, $color, $color);
      }
      // создаем изображение из исходного
      $img2 = imageCreateFromJpeg($filename);
      // объединяем исходное изображение и серое
      imageCopyMerge($img,$img2,0,0,0,0, $width, $height, 100);
      // сохраняем изображение
      imagejpeg($img, $resultName);
      // очищаем память
      imagedestroy($img);
    }
    // пример использования 
    makeGrayPic('test.jpg', 'testGray.jpg');
?>