Я изменяю размеры изображений PNG, используя функцию библиотеки изображений GD ImageCopyResampled (). Все работает отлично, я даже могу сохранить прозрачность альфа-смешивания с использованием ImageCreateTrueColor () вместо использования ImageCreate () для создания измененного изображения.
Проблема в том, что если я использую ImageCreateTrueColor (), а не ImageCreate (), размер файла PNG-файлов увеличивается от примерно 80 кб до 150 кб. Если я использую ImageCreate (), размер файла остается примерно того же размера, но цвета винта!
Поэтому мой вопрос: как сохранить альфа-смешение при изменении размера PNG-изображений без увеличения размера файла?
О, и я уменьшаю размеры PNG.
С imagecreate()
вы создаете PNG-файл с индексированным цветом, а с imagecreatetruecolor()
вы создаете 24-битный цветной PNG-файл. Конечно, качество повторной выборки будет намного лучше отображаться с истинным цветным изображением, так как оно имеет гораздо больший диапазон цветов для использования при повторной выборке. С imagecreate()
система может использовать только меньшую палитру.
Вы можете попробовать это с помощью Photoshop или Gimp, масштабируя изображения в разных цветовых режимах (индексированные и RGB). К сожалению, это характер игры – размер файла будет больше, когда будет сохранено больше цветов.
Я не уверен, изменит ли это, но вы можете попробовать использовать imagecopyresampled()
для копирования в ресурс истинного цвета (от imagecreatetruecolor()
), а затем копировать (но не перевыполнять) это на ресурс изображения палитры. Таким образом, палитра определяется на основе результата с повторной выборкой. Я не уверен, что вы сможете сохранить альфа-канал.