C - конвертировать GIF в JPG - PullRequest
1 голос
/ 17 октября 2010

Мне нужно преобразовать изображение GIF в изображение Jpeg, используя язык программирования C. Я искал в Интернете, но я не нашел пример, который мог бы мне помочь. Любые предложения приветствуются!

РЕДАКТИРОВАТЬ: я хочу сделать это с помощью кросс-платформенной библиотеки с открытым исходным кодом, как SDL.

Ответы [ 3 ]

5 голосов
/ 17 октября 2010

Попробуйте GD или ImageMagick библиотеки

1 голос
/ 17 октября 2010

Я обнаружил, что libafterimage невероятно прост в использовании. В этом фрагменте я также масштабирую изображение до максимум width или максимум height, сохраняя при этом аспект:

#include <libAfterImage/afterimage.h>



int convert_image_to_jpeg_of_size(const char* infile, const char* outfile, const double max_width, const double max_height)
{
    ASImage*  im;
    ASVisual* asv;
    ASImage*  scaled_im;
    double    height;
    double    width;
    double    pixelzoom;
    double    proportion;

    im = file2ASImage(infile, 0xFFFFFFFF, SCREEN_GAMMA, 0, ".", NULL);

    if (!im) {

        return 1;
    }

    proportion = (double)im->width / (double)im->height;

    asv = create_asvisual(NULL, 0, 0, NULL);

    if (proportion > 1) {
            /* Oblong. */
        width = max_width;
        pixelzoom = max_width / im->width;
        height = (double)im->height * pixelzoom;
    } else {
        height = max_height;
        pixelzoom = max_height / im->height;
        width = (double)im->width * pixelzoom;
    }

    scaled_im = scale_asimage(asv, im, width, height, ASA_ASImage, 0, ASIMAGE_QUALITY_DEFAULT);

        /* writing result into the file */
    ASImage2file(scaled_im, NULL, outfile, ASIT_Jpeg, NULL);
    destroy_asimage(&scaled_im);
    destroy_asimage(&im);

    return 0;
}
0 голосов
/ 17 октября 2010

Не самый простой в использовании, но самый быстрый способ - почти наверняка использовать libavcodec / libavformat из ffmpeg.

...