Intereting Posts

Проблемы с PHP GD с ImageCreateTrueColor и PNG

Я изменяю размеры изображений PNG, используя функцию библиотеки изображений GD ImageCopyResampled (). Все работает отлично, я даже могу сохранить прозрачность альфа-смешивания с использованием ImageCreateTrueColor () вместо использования ImageCreate () для создания измененного изображения.

Проблема в том, что если я использую ImageCreateTrueColor (), а не ImageCreate (), размер файла PNG-файлов увеличивается от примерно 80 кб до 150 кб. Если я использую ImageCreate (), размер файла остается примерно того же размера, но цвета винта!

Поэтому мой вопрос: как сохранить альфа-смешение при изменении размера PNG-изображений без увеличения размера файла?

О, и я уменьшаю размеры PNG.

С imagecreate() вы создаете PNG-файл с индексированным цветом, а с imagecreatetruecolor() вы создаете 24-битный цветной PNG-файл. Конечно, качество повторной выборки будет намного лучше отображаться с истинным цветным изображением, так как оно имеет гораздо больший диапазон цветов для использования при повторной выборке. С imagecreate() система может использовать только меньшую палитру.

Вы можете попробовать это с помощью Photoshop или Gimp, масштабируя изображения в разных цветовых режимах (индексированные и RGB). К сожалению, это характер игры – размер файла будет больше, когда будет сохранено больше цветов.

Я не уверен, изменит ли это, но вы можете попробовать использовать imagecopyresampled() для копирования в ресурс истинного цвета (от imagecreatetruecolor() ), а затем копировать (но не перевыполнять) это на ресурс изображения палитры. Таким образом, палитра определяется на основе результата с повторной выборкой. Я не уверен, что вы сможете сохранить альфа-канал.