Interface ImageRenderer

  • All Known Implementing Classes:
    BitmapImageRenderer

    public interface ImageRenderer
    Classes can implement this interfaces to support other formats, for example, use Apache Batik to render WMF (since POI 4.0, there's an internal WMF/EMF/EMF+ renderer in POI), 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 Detail

      • canRender

        boolean canRender​(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​(InputStream data,
                       String contentType)
                throws IOException
        Load and buffer the image
        Parameters:
        data - the raw image stream
        contentType - the content type
        Throws:
        IOException
      • loadImage

        void loadImage​(byte[] data,
                       String contentType)
                throws IOException
        Load and buffer the image
        Parameters:
        data - the raw image bytes
        contentType - the content type
        Throws:
        IOException
      • getNativeBounds

        Rectangle2D getNativeBounds()
        Returns:
        the format-specific / not-normalized bounds of the image
      • getBounds

        Rectangle2D getBounds()
        Returns:
        the bounds of the buffered image in pixel
      • getDimension

        default 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

        BufferedImage getImage()
        Returns:
        the image as buffered image or null if image could not be loaded
      • getImage

        BufferedImage getImage​(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​(Graphics2D graphics,
                          Rectangle2D anchor)
        Render picture data into the supplied graphics
        Returns:
        true if the picture data was successfully rendered
      • drawImage

        boolean drawImage​(Graphics2D graphics,
                          Rectangle2D anchor,
                          Insets clip)
        Render picture data into the supplied graphics
        Returns:
        true if the picture data was successfully rendered
      • setDefaultCharset

        default void setDefaultCharset​(Charset defaultCharset)
        Sets the default charset to render text elements. Opposed to other windows libraries in POI this simply defaults to Windows-1252.
        Parameters:
        defaultCharset - the default charset
      • setCacheInput

        default void setCacheInput​(boolean enable)
        Dis-/Enables caching of input data for later retrieval. Opposed to getImage(), which returns a BufferedImage, the cached image can be later used to embedded the original, unmodified data
        Parameters:
        enable - dis-/enables caching - this is an optional operation. false removes already cached data
      • getCachedImage

        default byte[] getCachedImage()
        Returns:
        the cached image data
      • getCachedContentType

        default String getCachedContentType()
        Returns:
        the cached content type