Я написал функцию ниже.Он переключает один цвет на другой.В качестве изображений используются спрайты css с различными цветами и белым фоном.
Итак ... спрайт 1 может быть синим, а спрайт 2 может быть зеленым.
Функция будет запущена дважды для заменысиний + зеленый с любыми требуемыми цветами.
/**
* Changes the color of a graphic.
* $settings = array (
* 'icon'
* 'new_icon'
* 'old_color' = array
* 'new_color' = array
* );
*/
function updateIconColor($settings=array()) {
// Create Image
$image = imagecreatefrompng($settings['icon']);
// Convert True color image to a palatte
imagetruecolortopalette($image, false, 255);
// Restore Alpha
$white = imagecolorclosest($image, 255, 255, 255);
imagecolortransparent($image, $white);
// Find + Set color
$index = imagecolorclosest($image, $settings['old_color'][0],$settings['old_color'][1],$settings['old_color'][2]);
imagecolorset($image, $index, $settings['new_color'][0], $settings['new_color'][1], $settings['new_color'][2]);
// Restore Alpha
imageAlphaBlending($image, true);
imageSaveAlpha($image, true);
// Save
imagepng($image, $settings['new_icon']); // save image as gif
imagedestroy($image);
}
Мне нужно разрешить размытие на этих изображениях.Есть ли способ, которым эту функцию можно изменить, чтобы она справлялась с размытыми изображениями или сама добавляла сглаживание?