перекрасить определенный пиксель в изображении

maxy666

Профессор
Регистрация
23 Июл 2012
Сообщения
143
Реакции
44
Помогите пожалуйста в следующем:
Существует задача перекрасить ( осветлить или затемнить пиксели картинки), которые не попадают в диапазон rpg .
Посоветуйте пожалуйста может есть какие то функции для этого, или посмотрите что не так в данном коде, возникает проблема записать изменений пик сель на картинку
Код:
/ / Обрабатываем пиксели которые сильно отличаться от нужных значений
/ / Выбираем из базы значение по которым будут равняться пиксели
$image_r = $row['r'];
$image_g = $row['g'];
$image_b= $row['b'];
$image_obob = $row['url_image'];
// Узнаем размер изображение
$rozmi_y = imagesy($image_obob);
$rozmir_x = imagesx($image_obob);
 
// Делаем проверку в цикле каждого пикселя
for( $h = 0; $h <= $rozmir_y; $h ++ ){
for( $w = 0; $w <= $rozmir_x; $w ++ )
{
// Узнаем цвет пикселя в координатах $w, $h
$color = imagecolorat( $image_obob, $w, $h );
$r = ($color >> 16) & 0xFF;
$g = ($color >> 8) & 0xFF;
$b = $color & 0xFF;
$x = $w;
$y = $h;
// Заносим изначальные значение цвета пикселя
$iznach_r = $r;
$iznach_g = $g;
$iznach_b = $b;
// Проверяем red цвет
if ($r < "$image_r - 50")
{$r = "$r+50";}
elseif ($r < "$image_r + 50")
{$r = "$r-50";}
echo $r;
// Проверяем green цвет
if ($g < "$image_g - 50")
{$g = "$g+50";}
elseif ($g < "$image_g + 50")
{$g = "$g-50";}
// Проверяем blue цвет
if ($b < "$image_b - 50")
{$b = "$b+50";}
elseif ($b < "$image_b + 50")
{$b = "$b-50";}
 
// Проверяем нужно ли делать перекрашивание пикселя
if ($iznach_r <> $r OR $iznach_g <> $g OR $iznach_b <> $b)
{
// Записываем значение в пиксель
$image_obob =imagecreatefromjpeg($image_obob);
$picsl_color = imagecolorallocate ($image_obob, $r, $g ,$b );
imagesetpixel ($image_obob , $rozmir_x , $rozmir_y , $picsl_color);
}
 
}}
 
PHP:
Включи отображение нотайсов и сам увидишь:
@ini_set('error_reporting',8191);	error_reporting(8191); //8191	E_ALL ^ E_NOTICE	
@ini_set('display_errors','On'); // 'On' - true;	
@ini_set('html_errors', true);

У тебя размер получается в одну переменную $rozmi_y = imagesy($image_obob);
а цикл запускаешь для другой for( $h = 0; $h <= $rozmir_y; $h ++ ){
ошибка в одну букву

И скобки убери из математических выражений "$image_g - 50" ...
 
cпасибо подправил....но все равно не работает
сильно с функциями изображений не разбираюсь
думаю ошибка в строках
// Записываем значение в пиксель
$image_obob =imagecreatefromjpeg($image_obob);
$picsl_color = imagecolorallocate ($image_obob, $r, $g ,$b );
imagesetpixel ($image_obob , $rozmir_x , $rozmir_y , $picsl_color);
 
Назад
Сверху