10#include "webp/decode.h"
11#include "webp/encode.h"
13#define GD_WEBP_ALLOC_STEP (4*1024)
42 uint8_t *filedata =
NULL;
50 unsigned char *read, *temp;
60 gd_error(
"WebP decode: realloc failed");
64 n =
gdGetBuf(read, GD_WEBP_ALLOC_STEP, infile);
68 }
while (
n>0 &&
n!=EOF);
70 if (WebPGetInfo(filedata,
size, &width, &height) == 0) {
71 gd_error(
"gd-webp cannot get webp info");
81 argb = WebPDecodeARGB(filedata,
size, &width, &height);
83 gd_error(
"gd-webp cannot allocate temporary buffer");
88 for (y = 0,
p = argb; y < height; y++) {
89 for (x = 0; x < width; x++) {
91 register uint8_t r = *(
p++);
92 register uint8_t g = *(
p++);
93 register uint8_t b = *(
p++);
117 gd_error(
"Palette image not supported by webp");
147 a = 255 - ((
a << 1) + (
a >> 6));
163 gd_error(
"gd-webp encoding failed");
173void gdImageWebpEx (
gdImagePtr im, FILE * outFile,
int quality)
180void gdImageWebp (
gdImagePtr im, FILE * outFile)
int overflow2(int a, int b)
#define gdTrueColorGetBlue(c)
void * gdDPExtractData(struct gdIOCtx *ctx, int *size)
#define gdTrueColorGetGreen(c)
#define gdImageTrueColor(im)
gdImagePtr gdImageCreateFromWebp(FILE *fd)
#define gdTrueColorGetAlpha(c)
#define gdTrueColorGetRed(c)
gdImagePtr gdImageCreateFromWebpPtr(int size, void *data)
gdIOCtx * gdNewFileCtx(FILE *)
#define gdTrueColorAlpha(r, g, b, a)
gdIOCtx * gdNewDynamicCtx(int, void *)
void gdImageWebpCtx(gdImagePtr im, gdIOCtx *outfile, int quality)
gdIOCtx * gdNewDynamicCtxEx(int size, void *data, int freeFlag)
gdImagePtr gdImageCreateFromWebpCtx(gdIOCtxPtr in)
int gdGetBuf(void *buf, int size, gdIOCtx *ctx)
int gdPutBuf(const void *buf, int size, gdIOCtx *ctx)
#define gdRealloc(ptr, size)
void gdImageDestroy(gdImagePtr im)
void gd_error(const char *format,...)
gdImagePtr gdImageCreateTrueColor(int sx, int sy)
void(* gd_free)(struct gdIOCtx *)