При использовании php библиотеки GD для сжатия изображений, библиотека работы с изображениями Image_lib, входящая в состав фреймворка Code-igniter при сжатии прозрачных PNG по-умолчанию делает прозрачный фон черным для GIF и PNG файлов, что не очень красиво.
Данное решение позволяет сохранять прозрачность при сжатии изображений:
В system/libraries/Image_lib.php, после строчки
$dst_img = $create($this->width, $this->height);
добавить следующий текст:
// keeping transparency
$transparent_index = imagecolortransparent($src_img);
if ($transparent_index >= 0) {
imagepalettecopy($src_img, $dst_img);
imagefill($dst_img, 0, 0, $transparent_index);
imagecolortransparent($dst_img, $transparent_index);
imagetruecolortopalette($dst_img, true, 256);
}
elseif ($this->image_type == 3) {
imagealphablending($dst_img, false);
$transparent_index = imagecolorallocatealpha($src_img, 0, 0, 0, 127);
imagefill($dst_img, 0, 0, $transparent_index);
imagesavealpha($dst_img, true);
}
Недостатком такого решения является то, что изменяется системная библиотека в system/ , а при "обновлении" проекта, изменения могут затеряться.