Hello,

I sent a similar mail a couple of months ago. I didn't receive any response,
but I had only recently subscribed, maybe it got lost in translation.

The CONTRIBUTING.md says, I should post here.

A lot of my data is raster data with alpha-channel. About 2% fail when
serving them through the tile server at some resolutions.  I can't
produce a small, self-contained example, unfortunately. But I have
tracked it down and it seems the alpha-channel is rendered separately
from the rest of the image and is "allergic" to 0-size tile-width.
This is the way I fixed it in 21.1 (verified in my environment).
If necessary, I can give you the stack trace from the logs, the
AWT class doesn't like 0.

This is the patch on current main HEAD:

diff --git 
a/modules/library/coverage/src/main/java/org/geotools/image/ImageWorker.java 
b/modules/library/coverage/src/main/java/org/geotools/image/ImageWorker.java
index 0dfee3e..82c0d3f 100644
--- a/modules/library/coverage/src/main/java/org/geotools/image/ImageWorker.java
+++ b/modules/library/coverage/src/main/java/org/geotools/image/ImageWorker.java
@@ -4452,15 +4452,17 @@ public class ImageWorker {
             Object candidate = hints.get(JAI.KEY_IMAGE_LAYOUT);
             if (candidate instanceof ImageLayout) {
                 ImageLayout layout = (ImageLayout) candidate;
-                ImageLayout layout2 =
-                        new ImageLayout2(
-                                layout.getTileGridXOffset(null),
-                                layout.getTileGridYOffset(null),
-                                layout.getTileWidth(null),
-                                layout.getTileHeight(null),
-                                sm,
-                                cm);
-                merged.setRenderingHints(new 
RenderingHints(JAI.KEY_IMAGE_LAYOUT, layout2));
+                if (layout.getTileWidth(null) > 0 && 
layout.getTileHeight(null) > 0) {
+                    ImageLayout layout2 =
+                            new ImageLayout2(
+                                    layout.getTileGridXOffset(null),
+                                    layout.getTileGridYOffset(null),
+                                    layout.getTileWidth(null),
+                                    layout.getTileHeight(null),
+                                    sm,
+                                    cm);
+                    merged.setRenderingHints(new 
RenderingHints(JAI.KEY_IMAGE_LAYOUT, layout2));
+                }
             }
             image = merged.addBand(alphaChannel, false, true, 
null).getRenderedImage();
         }

I could also create a pull request (from 
https://github.com/irisiflimsi/geotools) and an issue for it, if you prefer.

Sincerely,
Michael



_______________________________________________
GeoTools-Devel mailing list
GeoTools-Devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geotools-devel

Reply via email to