ImageView has artifacts when uiScale is set on Linux

Christopher Schnick crschnick at xpipe.io
Sat Feb 24 04:50:03 UTC 2024


Hello,

due to the scaling problems on Linux with 
https://bugs.openjdk.org/browse/JDK-8326428, I tried to implement a 
workaround by manually setting glass.gtk.uiScale to the appropriate 
value. However, when this value is not 100%, small images, in this case 
40x40, often have artifacts around the borders:

Original image:

The same does not happen when using the same uiScale on Windows. This 
was done with the latest ea build on Ubuntu 23.10. The exact scale does 
not matter as long it is not 100%.

This is the code I used:

|public class ImageSize extends Application {

     public static void main(String[] args) {
         System.setProperty("glass.gtk.uiScale", "400%");
         Application.launch(ImageSize.class, args);
     }

     @Override
     public void start(Stage primaryStage) throws Exception {
         var img = 
"data:image/png;base64,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";
         var r = new ImageView(img);
         r.setFitWidth(40);
         r.setFitHeight(40);

         var s = new StackPane(r);
         s.setBackground(Background.fill(Color.BLACK));

         var scene = new Scene(s, 100, 100);
         primaryStage.setScene(scene);
         primaryStage.setTitle("Test");
         primaryStage.show();
     }
}|

Is this a bug or a limitation in the renderer?

Best
Christopher Schnick

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/openjfx-dev/attachments/20240224/025bd979/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: jXZ2l5i0uMKGQvOp.png
Type: image/png
Size: 39042 bytes
Desc: not available
URL: <https://mail.openjdk.org/pipermail/openjfx-dev/attachments/20240224/025bd979/jXZ2l5i0uMKGQvOp-0001.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: k8sCluster_icon-40.png
Type: image/png
Size: 2315 bytes
Desc: not available
URL: <https://mail.openjdk.org/pipermail/openjfx-dev/attachments/20240224/025bd979/k8sCluster_icon-40-0001.png>


More information about the openjfx-dev mailing list