Я пытаюсь преобразовать изображения png в формат webp, используя библиотеку libgd в C.
В основном у меня есть палитра PNG-буфера, который я загружаю, чтобы преобразовать его в настоящий цвет. Затем я могу создать свой WEBP-буфер для записи в файл.
Вот мой код:
gdImagePtr im = gdImageCreateFromPngPtr(*len, *buffer);
if(!im->trueColor) // always true
{
gdImagePaletteToTrueColor(im);
}
if (!im)
{
*buffer = 0;
return;
}
int ilen;
*buffer = gdImageWebpPtr(im, &ilen);
*len = ilen;
gdImageDestroy(im);
Я проверил член paletteQuantificationMethod, он равен GD_QUANT_DEFAULT.
проблема в том, что когда изображение заполнено только одним цветом, оно работает, но как только есть содержимое, функция gdImagePaletteToTrueColor возвращает 0 и значение im равно null.
Я что-то не так делаю при преобразовании из палитры в истинный цвет?