[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: белый цвет в прозрачный. png
Kusss
Преобразую JPG в PNG , а потом пытаюсь белый цвет в диапазоне [230-255] заменить на прозрачный.
Пошел самым простым путем - перебором.
Но изменяется только конечная [255, 255, 255]
// И сделать прозрачным белый
//Преобразование полноцветного изображения в палитровое
//imagetruecolortopalette($print, false, 256);

for($r=230;$r <= 255; $r++){
for($g=230;$g <= 255; $g++){
for($b=230;$b <= 255; $b++){
$white = ImageColorAllocate($print, $r, $g, $b);
imagecolortransparent ($print, $white);
}
}
}

А вот если раскомментировать преобразование - все как нужно .... но в 255 цветах :(

Помогите решить задачу.
Kusss
Как выяснялось, прозрачным может быть только 1 цвет.
Пришлось перебрать картинку по пиксельно, и заменить нужное на белый.
// белый цвет
$white = imagecolorallocate($print, 255, 255, 255);

// Проходим всю картинку по пиксельно
for ($x = 0; $x <= $print_width; $x++){
for ($y = 0; $y <= $print_height; $y++){
$rgb = imagecolorat($print, $x, $y);
$colors = imagecolorsforindex($print, $rgb);
for($r=250;$r <= 255; $r++){
for($g=250;$g <= 255; $g++){
for($b=250;$b <= 255; $b++){
if ( $colors['red'] == $r && $colors['blue'] == $g && $colors['green'] == $b )
imageSetPixel($print, $x, $y, $white);

}
}
}
}
}


// Заменяем на прозрачный
imagecolortransparent ($print, $white);


Медленно, но работает. :D
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.