org.springframework.http.converter

## Class BufferedImageHttpMessageConverter

- java.lang.Object
- - org.springframework.http.converter.BufferedImageHttpMessageConverter

- All Implemented Interfaces:
    HttpMessageConverter<BufferedImage>

      public class BufferedImageHttpMessageConverter
      extends Object
      implements HttpMessageConverter<BufferedImage>

  Implementation of `HttpMessageConverter` that can read and write `BufferedImages`.

  By default, this converter can read all media types that are supported by the registered image readers, and writes using the media type of the first available registered image writer. This behavior can be overriden by setting the #setContentType(org.springframework.http.MediaType) contentType} properties.

  If the `cacheDir` property is set to an existing directory, this converter will cache image data.

  The `process(ImageReadParam)` and `process(ImageWriteParam)` template methods allow subclasses to override Image I/O parameters.

  Since:
    3.0
  Author:
    Arjen Poutsma

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `BufferedImageHttpMessageConverter()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `canRead(Class<?> clazz, MediaType mediaType)` Indicates whether the given class can be read by this converter.
    `boolean` | `canWrite(Class<?> clazz, MediaType mediaType)` Indicates whether the given class can be written by this converter.
    `MediaType` | `getDefaultContentType()` Returns the default `Content-Type` to be used for writing.
    `List<MediaType>` | `getSupportedMediaTypes()` Return the list of `MediaType` objects supported by this converter.
    `protected void` | `process(ImageReadParam irp)` Template method that allows for manipulating the `ImageReadParam` before it is used to read an image.
    `protected void` | `process(ImageWriteParam iwp)` Template method that allows for manipulating the `ImageWriteParam` before it is used to write an image.
    `BufferedImage` | `read(Class<? extends BufferedImage> clazz, HttpInputMessage inputMessage)` Read an object of the given type form the given input message, and returns it.
    `void` | `setCacheDir(File cacheDir)` Sets the cache directory.
    `void` | `setDefaultContentType(MediaType defaultContentType)` Sets the default `Content-Type` to be used for writing.
    `void` | `write(BufferedImage image, MediaType contentType, HttpOutputMessage outputMessage)` Write an given object to the given output message.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### BufferedImageHttpMessageConverter

          public BufferedImageHttpMessageConverter()

  - ### Method Detail

    - #### setDefaultContentType

          public void setDefaultContentType(MediaType defaultContentType)

      Sets the default `Content-Type` to be used for writing.
      Throws:
        `IllegalArgumentException` - if the given content type is not supported by the Java Image I/O API

    - #### getDefaultContentType

          public MediaType getDefaultContentType()

      Returns the default `Content-Type` to be used for writing. Called when `write(java.awt.image.BufferedImage, org.springframework.http.MediaType, org.springframework.http.HttpOutputMessage)` is invoked without a specified content type parameter.

    - #### setCacheDir

          public void setCacheDir(File cacheDir)

      Sets the cache directory. If this property is set to an existing directory, this converter will cache image data.

    - #### canRead

          public boolean canRead(Class<?> clazz,
                        MediaType mediaType)

      Description copied from interface: `HttpMessageConverter`
      Indicates whether the given class can be read by this converter.
      Specified by:
        `canRead` in interface `HttpMessageConverter<BufferedImage>`
      Parameters:
        `clazz` - the class to test for readability
        `mediaType` - the media type to read, can be `null` if not specified. Typically the value of a `Content-Type` header.
      Returns:
        `true` if readable; `false` otherwise

    - #### canWrite

          public boolean canWrite(Class<?> clazz,
                         MediaType mediaType)

      Description copied from interface: `HttpMessageConverter`
      Indicates whether the given class can be written by this converter.
      Specified by:
        `canWrite` in interface `HttpMessageConverter<BufferedImage>`
      Parameters:
        `clazz` - the class to test for writability
        `mediaType` - the media type to write, can be `null` if not specified. Typically the value of an `Accept` header.
      Returns:
        `true` if writable; `false` otherwise

    - #### getSupportedMediaTypes

          public List<MediaType> getSupportedMediaTypes()

      Description copied from interface: `HttpMessageConverter`
      Return the list of `MediaType` objects supported by this converter.
      Specified by:
        `getSupportedMediaTypes` in interface `HttpMessageConverter<BufferedImage>`
      Returns:
        the list of supported media types

    - #### read

          public BufferedImage read(Class<? extends BufferedImage> clazz,
                           HttpInputMessage inputMessage)
                             throws IOException,
                                    HttpMessageNotReadableException

      Description copied from interface: `HttpMessageConverter`
      Read an object of the given type form the given input message, and returns it.
      Specified by:
        `read` in interface `HttpMessageConverter<BufferedImage>`
      Parameters:
        `clazz` - the type of object to return. This type must have previously been passed to the `canRead` method of this interface, which must have returned `true`.
        `inputMessage` - the HTTP input message to read from
      Returns:
        the converted object
      Throws:
        `IOException` - in case of I/O errors
        `HttpMessageNotReadableException` - in case of conversion errors

    - #### write

          public void write(BufferedImage image,
                   MediaType contentType,
                   HttpOutputMessage outputMessage)
                     throws IOException,
                            HttpMessageNotWritableException

      Description copied from interface: `HttpMessageConverter`
      Write an given object to the given output message.
      Specified by:
        `write` in interface `HttpMessageConverter<BufferedImage>`
      Parameters:
        `image` - the object to write to the output message. The type of this object must have previously been passed to the `canWrite` method of this interface, which must have returned `true`.
        `contentType` - the content type to use when writing. May be `null` to indicate that the default content type of the converter must be used. If not `null`, this media type must have previously been passed to the `canWrite` method of this interface, which must have returned `true`.
        `outputMessage` - the message to write to
      Throws:
        `IOException` - in case of I/O errors
        `HttpMessageNotWritableException` - in case of conversion errors

    - #### process

          protected void process(ImageReadParam irp)

      Template method that allows for manipulating the `ImageReadParam` before it is used to read an image.

      Default implementation is empty.

    - #### process

          protected void process(ImageWriteParam iwp)

      Template method that allows for manipulating the `ImageWriteParam` before it is used to write an image.

      Default implementation is empty.