# JPEG IO

Read and write JPEG images.

Summary

JPEG IO | Read and write JPEG images.
Functions |
gdImageJpeg | gdImageJpeg outputs the specified image to the specified file in JPEG format.
gdImageJpegPtr | Identical to gdImageJpeg except that it returns a pointer to a memory area with the JPEG data.
gdImageJpegCtx | Write the image as JPEG data via a gdIOCtx.
gdImageCreateFromJpeg | See gdImageCreateFromJpegEx.
gdImageCreateFromJpegEx | gdImageCreateFromJpegEx is called to load truecolor images from JPEG format files.
gdImageCreateFromJpegPtr |
gdImageCreateFromJpegPtrEx |
gdImageCreateFromJpegCtx | See gdImageCreateFromJpeg.
gdImageCreateFromJpegCtxEx | See gdImageCreateFromJpeg.

### Functions

### gdImageJpeg

> void gdImageJpeg( | gdImagePtr |  | im,
> | FILE | * | outFile,
> | int |  | quality | )

gdImageJpeg outputs the specified image to the specified file in JPEG format. The file must be open for writing. Under MSDOS and all versions of Windows, it is important to use “wb” as opposed to simply “w” as the mode when opening the file, and under Unix there is no penalty for doing so. gdImageJpeg does not close the file; your code must do so.

If quality is negative, the default IJG JPEG quality value (which should yield a good general quality / size tradeoff for most situations) is used. Otherwise, for practical purposes, quality should be a value in the range 0-95, higher quality values usually implying both higher quality and larger image sizes.

If you have set image interlacing using gdImageInterlace, this function will interpret that to mean you wish to output a progressive JPEG. Some programs (e.g., Web browsers) can display progressive JPEGs incrementally; this can be useful when browsing over a relatively slow communications link, for example. Progressive JPEGs can also be slightly smaller than sequential (non-progressive) JPEGs.

#### Variants

gdImageJpegCtx stores the image using a gdIOCtx struct.

gdImageJpegPtr stores the image to RAM.

#### Parameters

im | The image to save
outFile | The FILE pointer to write to.
quality | Compression quality (0-95, 0 means use the default).

#### Returns

Nothing.

#### Example

>     gdImagePtr im;
>     int black, white;
>     FILE *out;
>     // Create the image
>     im = gdImageCreate(100, 100);
>     // Allocate background
>     white = gdImageColorAllocate(im, 255, 255, 255);
>     // Allocate drawing color
>     black = gdImageColorAllocate(im, 0, 0, 0);
>     // Draw rectangle
>     gdImageRectangle(im, 0, 0, 99, 99, black);
>     // Open output file in binary mode
>     out = fopen("rect.jpg", "wb");
>     // Write JPEG using default quality
>     gdImageJpeg(im, out, -1);
>     // Close file
>     fclose(out);
>     // Destroy image
>     gdImageDestroy(im);

### gdImageJpegPtr

> void * gdImageJpegPtr( | gdImagePtr |  | im,
> | int | * | size,
> | int |  | quality | )

Identical to gdImageJpeg except that it returns a pointer to a memory area with the JPEG data. This memory must be freed by the caller when it is no longer needed.

The caller must invoke gdFree, not free(). This is because it is not guaranteed that libgd will use the same implementation of malloc, free, etc. as your proggram.

The ‘size’ parameter receives the total size of the block of memory.

#### Parameters

im | The image to write
size | Output: the size of the resulting image.
quality | Compression quality.

#### Returns

A pointer to the JPEG data or NULL if an error occurred.

### gdImageJpegCtx

> void gdImageJpegCtx( | gdImagePtr |  | im,
> | gdIOCtx | * | outfile,
> | int |  | quality | )

Write the image as JPEG data via a gdIOCtx. See gdImageJpeg for more details.

#### Parameters

im | The image to write.
outfile | The output sink.
quality | Image quality.

### gdImageCreateFromJpeg

> gdImagePtr gdImageCreateFromJpeg( | FILE | * | inFile | )

See gdImageCreateFromJpegEx.

### gdImageCreateFromJpegEx

> gdImagePtr gdImageCreateFromJpegEx( | FILE | * | inFile,
> | int |  | ignore_warning | )

gdImageCreateFromJpegEx is called to load truecolor images from JPEG format files. Invoke gdImageCreateFromJpegEx with an already opened pointer to a file containing the desired image. gdImageCreateFromJpegEx returns a gdImagePtr to the new truecolor image, or NULL if unable to load the image (most often because the file is corrupt or does not contain a JPEG image). gdImageCreateFromJpegEx does not close the file.

You can inspect the sx and sy members of the image to determine its size. The image must eventually be destroyed using gdImageDestroy.

The returned image is always a truecolor image.

#### Variants

gdImageCreateFromJpegPtrEx creates an image from JPEG data already in memory.

gdImageCreateFromJpegCtxEx reads its data via the function pointers in a gdIOCtx structure.

gdImageCreateFromJpeg, gdImageCreateFromJpegPtr and gdImageCreateFromJpegCtx are equivalent to calling their Ex-named counterparts with an ignore_warning set to 1 (i.e. TRUE).

#### Parameters

infile | The input FILE pointer.
ignore_warning | Flag. If true, ignores recoverable warnings.

#### Returns

A pointer to the new truecolor image. This will need to be destroyed with gdImageDestroy once it is no longer needed.

On error, returns NULL.

#### Example

>     gdImagePtr im;
>     FILE *in;
>     in = fopen("myjpeg.jpg", "rb");
>     im = gdImageCreateFromJpegEx(in, GD_TRUE);
>     fclose(in);
>     // ... Use the image ...
>     gdImageDestroy(im);

### gdImageCreateFromJpegPtr

> gdImagePtr gdImageCreateFromJpegPtr( | int |  | size,
> | void | * | data | )

#### Parameters

size | size of JPEG data in bytes.
data | pointer to JPEG data.

See gdImageCreateFromJpegEx.

### gdImageCreateFromJpegPtrEx

> gdImagePtr gdImageCreateFromJpegPtrEx( | int |  | size,
> | void | * | data,
> | int |  | ignore_warning | )

#### Parameters

size | size of JPEG data in bytes.
data | pointer to JPEG data.
ignore_warning | if true, ignore recoverable warnings

See gdImageCreateFromJpegEx.

### gdImageCreateFromJpegCtx

> gdImagePtr gdImageCreateFromJpegCtx( | gdIOCtx | * | infile | )

See gdImageCreateFromJpeg.

### gdImageCreateFromJpegCtxEx

> gdImagePtr gdImageCreateFromJpegCtxEx( | gdIOCtx | * | infile,
> | int |  | ignore_warning | )

See gdImageCreateFromJpeg.

> void gdImageJpeg( | gdImagePtr |  | im,
> | FILE | * | outFile,
> | int |  | quality | )

gdImageJpeg outputs the specified image to the specified file in JPEG format.

> void * gdImageJpegPtr( | gdImagePtr |  | im,
> | int | * | size,
> | int |  | quality | )

Identical to gdImageJpeg except that it returns a pointer to a memory area with the JPEG data.

> void gdImageJpegCtx( | gdImagePtr |  | im,
> | gdIOCtx | * | outfile,
> | int |  | quality | )

Write the image as JPEG data via a gdIOCtx.
gdIOCtx structures hold function pointers for doing image IO.

> gdImagePtr gdImageCreateFromJpeg( | FILE | * | inFile | )

See gdImageCreateFromJpegEx.

> gdImagePtr gdImageCreateFromJpegEx( | FILE | * | inFile,
> | int |  | ignore_warning | )

gdImageCreateFromJpegEx is called to load truecolor images from JPEG format files.

> gdImagePtr gdImageCreateFromJpegPtr( | int |  | size,
> | void | * | data | )

> gdImagePtr gdImageCreateFromJpegPtrEx( | int |  | size,
> | void | * | data,
> | int |  | ignore_warning | )

> gdImagePtr gdImageCreateFromJpegCtx( | gdIOCtx | * | infile | )

See gdImageCreateFromJpeg.

> gdImagePtr gdImageCreateFromJpegCtxEx( | gdIOCtx | * | infile,
> | int |  | ignore_warning | )

See gdImageCreateFromJpeg.

> void gdImageInterlace ( | gdImagePtr | im,
> | int | interlaceArg | )

Sets whether an image is interlaced

> void gdFree ( | void | * | ptr | )

Frees memory that has been allocated by libgd functions.
The data structure in which gd stores images.

> void gdImageDestroy ( | gdImagePtr | im | )

gdImageDestroy is used to free the memory associated with an image.
Close