Uploaded image for project: 'Magnolia DAM Module'
  1. Magnolia DAM Module
  2. MGNLDAM-85

Displaying a png image fails in some case

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Critical Critical
    • 1.0
    • 1.0
    • None
    • None

      For some png (dam/demo-project/img/logo/magnolia-logo), we have the following exception when displaying an Image.
      This is related to the following resolved issue MGNLIMG-38.

      From ImageUtil.class

      final boolean isOpaque = img.getTransparency() == Transparency.OPAQUE;

      if (!isOpaque && !outputFormat.supportsTransparency()) {
      final WritableRaster raster = img.getRaster();
      final WritableRaster newRaster = raster.createWritableChild(0, 0, img.getWidth(), img.getHeight(), 0, 0, new int[]

      {0, 1, 2}

      );

      // create a ColorModel that represents the one of the ARGB except the alpha channel
      final DirectColorModel cm = (DirectColorModel) img.getColorModel();

      The image isOpack = false && supportsTransparency = false --> jump in the if statement.
      Issue is that this cast is failing: (DirectColorModel) img.getColorModel()
      img.getColoredModel() --> type ComponentColorModel
      and ComponentColorModel is not a sub class of DirectColorModel.

      -------------------------
      Caused by: java.lang.ClassCastException: java.awt.image.ComponentColorModel cannot be cast to java.awt.image.DirectColorModel
      at info.magnolia.imaging.util.ImageUtil.flattenTransparentImageForOpaqueFormat(ImageUtil.java:68)
      at info.magnolia.imaging.DefaultImageStreamer.serveImage(DefaultImageStreamer.java:68)
      at info.magnolia.imaging.caching.CachingImageStreamer.generateAndStore(CachingImageStreamer.java:197)
      at info.magnolia.imaging.caching.CachingImageStreamer$1.apply(CachingImageStreamer.java:118)
      at info.magnolia.imaging.caching.CachingImageStreamer$1.apply(CachingImageStreamer.java:114)
      at com.google.common.collect.ComputingConcurrentHashMap$ComputingValueReference.compute(ComputingConcurrentHashMap.java:355)
      at com.google.common.collect.ComputingConcurrentHashMap$ComputingSegment.compute(ComputingConcurrentHashMap.java:184)
      at com.google.common.collect.ComputingConcurrentHashMap$ComputingSegment.getOrCompute(ComputingConcurrentHashMap.java:153)
      at com.google.common.collect.ComputingConcurrentHashMap.getOrCompute(ComputingConcurrentHashMap.java:69)
      at com.google.common.collect.ComputingConcurrentHashMap$ComputingMapAdapter.get(ComputingConcurrentHashMap.java:393)
      at info.magnolia.imaging.caching.CachingImageStreamer.serveImage(CachingImageStreamer.java:136)
      ... 82 more

        Acceptance criteria

              czimmermann Christopher Zimmermann
              ehechinger Eric Hechinger
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

                Created:
                Updated:
                Resolved: