Class RenderedDynamicImageResource

All Implemented Interfaces:
Serializable, IResource, org.apache.wicket.util.io.IClusterable
Direct Known Subclasses:
DefaultButtonImageResource

A DynamicImageResource subclass that allows easy rendering of regeneratable (unbuffered) dynamic images. A RenderedDynamicImageResource implements the abstract method render(Graphics2D) to create/re-create a given image on-the-fly. When a RenderedDynamicImageResource is serialized, the image state is transient, which means it will disappear when the resource is sent over the wire and then will be recreated when required.

The format of the image (and therefore the resource's extension) can be specified with setFormat(String). The default format is "PNG" because JPEG is lossy and makes generated images look bad and GIF has patent issues.

Author:
Jonathan Locke, Gili Tzabari, Johan Compagner
See Also:
  • Constructor Details

    • RenderedDynamicImageResource

      public RenderedDynamicImageResource(int width, int height)
      Constructor.
      Parameters:
      width - Width of image
      height - Height of image
    • RenderedDynamicImageResource

      public RenderedDynamicImageResource(int width, int height, String format)
      Constructor.
      Parameters:
      width - Width of image
      height - Height of image
      format - The format of the image (jpg, png or gif)
  • Method Details

    • getHeight

      public int getHeight()
      Returns:
      Returns the height.
    • getType

      public int getType()
      Returns:
      Returns the type (one of BufferedImage.TYPE_*).
    • getWidth

      public int getWidth()
      Returns:
      Returns the width.
    • invalidate

      public void invalidate()
      Causes the image to be redrawn the next time its requested.
    • setHeight

      public void setHeight(int height)
      Parameters:
      height - The height to set.
    • setType

      public void setType(int type)
      Parameters:
      type - The type to set (one of BufferedImage.TYPE_*).
    • setWidth

      public void setWidth(int width)
      Parameters:
      width - The width to set.
    • getImageData

      protected byte[] getImageData(IResource.Attributes attributes)
      Description copied from class: DynamicImageResource
      Get image data for our dynamic image resource. If the subclass regenerates the data, it should set the DynamicImageResource.setLastModifiedTime(Instant) when it does so. This ensures that image caching works correctly.
      Specified by:
      getImageData in class DynamicImageResource
      Parameters:
      attributes - the context bringing the request, response and the parameters
      Returns:
      The image data for this dynamic image. null means there is no image and 404 (Not found) response will be return.
    • render

      protected byte[] render(IResource.Attributes attributes)
      Renders this image
      Parameters:
      attributes - the current request attributes
      Returns:
      The image data
    • render

      protected abstract boolean render(Graphics2D graphics, IResource.Attributes attributes)
      Override this method to provide your rendering code.
      Parameters:
      graphics - The graphics context to render on.
      attributes - the current request attributes
      Returns:
      true if the image was rendered. false if the image size was changed by the rendering implementation and the image should be re-rendered at the new size.