org.apache.poi.sl.draw

## Interface ImageRenderer

- All Known Implementing Classes:
    BitmapImageRenderer, HemfImageRenderer, HemfPlusGDIImageRenderer, HwmfImageRenderer, SVGImageRenderer

      public interface ImageRenderer

  Classes can implement this interfaces to support other formats, for example, use Apache Batik to render WMF, PICT can be rendered using Apple QuickTime API for Java:

       public class MyImageRendener implements ImageRendener {
           InputStream data;

           public boolean drawImage(Graphics2D graphics,Rectangle2D anchor,Insets clip) {
               // draw image
             DataInputStream is = new DataInputStream(data);
             org.apache.batik.transcoder.wmf.tosvg.WMFRecordStore wmfStore =
                     new org.apache.batik.transcoder.wmf.tosvg.WMFRecordStore();
             try {
                 wmfStore.read(is);
             } catch (IOException e){
                 return;
             }

             float scale = (float)anchor.width/wmfStore.getWidthPixels();

             org.apache.batik.transcoder.wmf.tosvg.WMFPainter painter =
                     new org.apache.batik.transcoder.wmf.tosvg.WMFPainter(wmfStore, 0, 0, scale);
             graphics.translate(anchor.x, anchor.y);
             painter.paint(graphics);
           }

           public void loadImage(InputStream data, String contentType) throws IOException {
               if ("image/wmf".equals(contentType)) {
                   this.data = data;
                   // use Apache Batik to handle WMF
               } else {
                   super.loadImage(data,contentType);
               }
           }
       }

  and then pass this class to your instance of java.awt.Graphics2D:

       graphics.setRenderingHint(Drawable.IMAGE_RENDERER, new MyImageRendener());

- - ### Method Summary

    All Methods Instance Methods Abstract Methods Default Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `canRender(java.lang.String contentType)` Determines if this image renderer implementation supports the given contentType
    `boolean` | `drawImage(java.awt.Graphics2D graphics, java.awt.geom.Rectangle2D anchor)` Render picture data into the supplied graphics
    `boolean` | `drawImage(java.awt.Graphics2D graphics, java.awt.geom.Rectangle2D anchor, java.awt.Insets clip)` Render picture data into the supplied graphics
    `java.awt.geom.Rectangle2D` | `getBounds()`
    `default java.awt.geom.Dimension2D` | `getDimension()`
    `default GenericRecord` | `getGenericRecord()`
    `java.awt.image.BufferedImage` | `getImage()`
    `java.awt.image.BufferedImage` | `getImage(java.awt.geom.Dimension2D dim)`
    `java.awt.geom.Rectangle2D` | `getNativeBounds()`
    `void` | `loadImage(byte[] data, java.lang.String contentType)` Load and buffer the image
    `void` | `loadImage(java.io.InputStream data, java.lang.String contentType)` Load and buffer the image
    `void` | `setAlpha(double alpha)`

- - ### Method Detail

    - #### canRender

          boolean canRender(java.lang.String contentType)

      Determines if this image renderer implementation supports the given contentType
      Parameters:
        `contentType` - the image content type
      Returns:
        if the content type is supported

    - #### loadImage

          void loadImage(java.io.InputStream data,
                         java.lang.String contentType)
                  throws java.io.IOException

      Load and buffer the image
      Parameters:
        `data` - the raw image stream
        `contentType` - the content type
      Throws:
        `java.io.IOException`

    - #### loadImage

          void loadImage(byte[] data,
                         java.lang.String contentType)
                  throws java.io.IOException

      Load and buffer the image
      Parameters:
        `data` - the raw image bytes
        `contentType` - the content type
      Throws:
        `java.io.IOException`

    - #### getNativeBounds

          java.awt.geom.Rectangle2D getNativeBounds()

      Returns:
        the format-specific / not-normalized bounds of the image

    - #### getBounds

          java.awt.geom.Rectangle2D getBounds()

      Returns:
        the bounds of the buffered image in pixel

    - #### getDimension

          default java.awt.geom.Dimension2D getDimension()

      Returns:
        the dimension of the buffered image in pixel

    - #### setAlpha

          void setAlpha(double alpha)

      Parameters:
        `alpha` - the alpha [0..1] to be added to the image (possibly already containing an alpha channel)

    - #### getImage

          java.awt.image.BufferedImage getImage()

      Returns:
        the image as buffered image or null if image could not be loaded

    - #### getImage

          java.awt.image.BufferedImage getImage(java.awt.geom.Dimension2D dim)

      Parameters:
        `dim` - the dimension in pixels of the returned image
      Returns:
        the image as buffered image or null if image could not be loaded
      Since:
        POI 3.15-beta2

    - #### drawImage

          boolean drawImage(java.awt.Graphics2D graphics,
                            java.awt.geom.Rectangle2D anchor)

      Render picture data into the supplied graphics
      Returns:
        true if the picture data was successfully rendered

    - #### drawImage

          boolean drawImage(java.awt.Graphics2D graphics,
                            java.awt.geom.Rectangle2D anchor,
                            java.awt.Insets clip)

      Render picture data into the supplied graphics
      Returns:
        true if the picture data was successfully rendered

    - #### getGenericRecord

          default GenericRecord getGenericRecord()

Copyright 2020 The Apache Software Foundation or its licensors, as applicable.