2016-07-22 10 views
0

Я прочитал все похожие вопросы на Stack Overflow, который имеет группу из-слов: черно-белого или монохромного. Эти сообщения обсуждаются по одной из двух общих проблем: серая шкала или черно-белый.

Я не хочу мой выходной образ в черный цвет только; но, я хочу больше. Я хочу, чтобы мой выход картины в одноцветного, которая задается переменным, например: $MyColor = #336699;, $MyColor = #3366CC; ...

Итак, мой вопрос не дублируется с любым существовавшим вопросом.Как преобразовать изображение «истинного цвета» в «одноцветное» изображение с помощью PHP?


Во-первых, у меня есть оригинальный образ, который является полноцветный изображение. Он сохраняется в формате JPEG:

*#1*. The original image.

Эта оригинальная картина имеет: цвета.


Тогда я мог бы превратить его в полутоновых изображений, после выполнения этого простого скрипта:

<?php 

$source_file = "1.JPG"; 

$im = ImageCreateFromJpeg($source_file); 

$imgw = imagesx($im); 
$imgh = imagesy($im); 

for ($i=0; $i<$imgw; $i++) 
{ 
     for ($j=0; $j<$imgh; $j++) 
     { 

       // Get the RGB value for current pixel 

       $rgb = ImageColorAt($im, $i, $j); 

       // Extract each value for: R, G, B 

       $rr = ($rgb >> 16) & 0xFF; 
       $gg = ($rgb >> 8) & 0xFF; 
       $bb = $rgb & 0xFF; 

       // Get the value from the RGB value 

       $g = round(($rr + $gg + $bb)/3); 

       // Gray-scale values have: R=G=B=G 

       $val = imagecolorallocate($im, $g, $g, $g); 

       // Set the gray value 

       imagesetpixel ($im, $i, $j, $val); 
     } 
} 

header('Content-type: image/jpeg'); 
imagejpeg($im); 

?> 

И, ниже результат:

*#2*. The gray-scale image.

На этом изображении в сером масштабе: цветов.


Теперь я хочу, чтобы преобразовать его в реальногоодин цвет изображения:

*#3*. The one-color image.

Это один-цветное изображение имеет: цвет.

В этом случае $MyColor = #000000;.


Можете ли вы показать мне: Как преобразовать истинно цветное изображение на один-цветного изображения с PHP?

+0

Если есть какие-либо проблемы с моим вопросом, пожалуйста, напишите ниже. Я прочту его; то я улучшу его. – 16ctt1x

+0

Подсказка для поиска: "dithering" –

+0

Он также проголосовали за закрытие. В основном потому, что вы не исследовали себя, и вы просто попросите урок –

ответ

1

всего две строки кода будет обрабатывать серой шкалы преобразования и уменьшения изображения только два цвета (потому что один-цветное изображение представляет собой чистый холст), с дизерингом:

$img = imagecreatefromjpeg('./38519049.jpg'); 

imagefilter($img, IMG_FILTER_GRAYSCALE); // convert to grey scale. 
imagetruecolortopalette($img, true, 2); // 'true' for dithering, '2' for number of colours. 

header('Content-type: image/jpeg'); 
imagejpeg($img); 

Результат:

enter image description here

+0

Да, он отлично работает! – 16ctt1x