@@ -132,27 +132,14 @@ static void ensureFonts() throws IOException {
132132}
133133
134134/** Convert an SVG string to a PNG file using Batik. */
135- /** Convert SVG to a crisp 1200×630 PNG by rendering at 3× then downsampling with bicubic interpolation. */
136135static void svgToPng (String svgContent , Path pngPath ) throws Exception {
137- int scale = 3 ;
138- // Render at 3× resolution
139136 var input = new TranscoderInput (new java .io .StringReader (svgContent ));
140- var bos = new java .io .ByteArrayOutputStream ();
141- var transcoder = new PNGTranscoder ();
142- transcoder .addTranscodingHint (PNGTranscoder .KEY_WIDTH , (float ) (W * scale ));
143- transcoder .addTranscodingHint (PNGTranscoder .KEY_HEIGHT , (float ) (H * scale ));
144- transcoder .transcode (input , new TranscoderOutput (bos ));
145-
146- // Read back and downsample to 1200×630
147- var hiRes = javax .imageio .ImageIO .read (new java .io .ByteArrayInputStream (bos .toByteArray ()));
148- var target = new java .awt .image .BufferedImage (W , H , java .awt .image .BufferedImage .TYPE_INT_ARGB );
149- var g = target .createGraphics ();
150- g .setRenderingHint (java .awt .RenderingHints .KEY_INTERPOLATION , java .awt .RenderingHints .VALUE_INTERPOLATION_BICUBIC );
151- g .setRenderingHint (java .awt .RenderingHints .KEY_RENDERING , java .awt .RenderingHints .VALUE_RENDER_QUALITY );
152- g .setRenderingHint (java .awt .RenderingHints .KEY_ANTIALIASING , java .awt .RenderingHints .VALUE_ANTIALIAS_ON );
153- g .drawImage (hiRes , 0 , 0 , W , H , null );
154- g .dispose ();
155- javax .imageio .ImageIO .write (target , "png" , pngPath .toFile ());
137+ try (var out = new java .io .BufferedOutputStream (Files .newOutputStream (pngPath ))) {
138+ var transcoder = new PNGTranscoder ();
139+ transcoder .addTranscodingHint (PNGTranscoder .KEY_WIDTH , (float ) W * 2 );
140+ transcoder .addTranscodingHint (PNGTranscoder .KEY_HEIGHT , (float ) H * 2 );
141+ transcoder .transcode (input , new TranscoderOutput (out ));
142+ }
156143}
157144
158145static SequencedMap <String , String > loadProperties (String file ) {
0 commit comments