Преобразование PNG-изображения палитры в настоящий цвет с помощью libgd - PullRequest
0 голосов
/ 13 января 2020

Я пытаюсь преобразовать изображения 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.

Я что-то не так делаю при преобразовании из палитры в истинный цвет?

...