You are viewing a plain text version of this content. The canonical link for it is here.
Posted to batik-dev@xmlgraphics.apache.org by "Mateusz (Jira)" <ji...@apache.org> on 2020/07/06 09:02:00 UTC

[jira] [Created] (BATIK-1288) PNG transcoder does not render PNG file correctly

Mateusz created BATIK-1288:
------------------------------

             Summary: PNG transcoder does not render PNG file correctly
                 Key: BATIK-1288
                 URL: https://issues.apache.org/jira/browse/BATIK-1288
             Project: Batik
          Issue Type: Bug
    Affects Versions: 1.13
         Environment: MacOS Catalina 10.15.4, MacOS Mojave, both visible on MacBooks host systems as well as inside Virtual Machines

openjdk version "1.8.0_252"
OpenJDK Runtime Environment Corretto-8.252.09.1 (build 1.8.0_252-b09)
OpenJDK 64-Bit Server VM Corretto-8.252.09.1 (build 25.252-b09, mixed mode)
            Reporter: Mateusz
             Fix For: trunk
         Attachments: SaveAsPNG.java, correct.png, incorrect_output_1.png, incorrect_output_2.png, input.svg

Please consider such code I use for rendering PNG from SVG. We use it for rendering various icon sizes. The majority of sizes are rendered as expected (correct.png) but some are being rendered incorrect (especially 180 and 360). That affects only some environments - on the majority of our MacBooks it works fine for most trials and on VMs it usually results in incorrect PNG rendered as below. Also, I didn't notice it happening for any other text strings that the one from the sample (that obviously doesn't mean it is the only one causing that).

May I ask you to check if that is something to be considered a batik bug? Or, if not - please please point me any investigation directions in terms of my code correctness, possible environment issues worth checking? 

 

Thanks!

 

*Sample code:*

```

PNGTranscoder t = new PNGTranscoder() 
 {
 @Override
 protected ImageRenderer createRenderer()
 {
 ImageRenderer r = super.createRenderer();
 RenderingHints rh = r.getRenderingHints();
 rh.add(new RenderingHints(RenderingHints.KEY_ALPHA_INTERPOLATION,RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY));
 rh.add(new RenderingHints(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON));
 rh.add(new RenderingHints(RenderingHints.KEY_COLOR_RENDERING,RenderingHints.VALUE_COLOR_RENDER_QUALITY));
 rh.add(new RenderingHints(RenderingHints.KEY_DITHERING,RenderingHints.VALUE_DITHER_DISABLE));
 rh.add(new RenderingHints(RenderingHints.KEY_FRACTIONALMETRICS,RenderingHints.VALUE_FRACTIONALMETRICS_ON));
 rh.add(new RenderingHints(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BICUBIC));
 rh.add(new RenderingHints(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY));
 rh.add(new RenderingHints(RenderingHints.KEY_STROKE_CONTROL,RenderingHints.VALUE_STROKE_PURE));
 rh.add(new RenderingHints(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_OFF));
 return r;
 }
 };

float size = 180.0f;
 // Set the transcoding hints.
 t.addTranscodingHint(PNGTranscoder.KEY_WIDTH, size);
 t.addTranscodingHint(PNGTranscoder.KEY_HEIGHT, size);

// Create the transcoder input.
 String svgURI = new File(args[0]).toURI().toString();
 TranscoderInput input = new TranscoderInput(svgURI);

// Create the transcoder output.
 OutputStream ostream = new FileOutputStream("out.png");
 TranscoderOutput output = new TranscoderOutput(ostream);

// Save the image.
 t.transcode(input, output);

```

 

 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: batik-dev-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: batik-dev-help@xmlgraphics.apache.org