You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by vl...@apache.org on 2020/03/28 18:37:04 UTC

[jmeter] branch master updated: Improve quality for "Save node as image" action

This is an automated email from the ASF dual-hosted git repository.

vladimirsitnikov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jmeter.git


The following commit(s) were added to refs/heads/master by this push:
     new 24584c6  Improve quality for "Save node as image" action
24584c6 is described below

commit 24584c66e8445b83c5251ca7fe13c922452b938e
Author: Vladimir Sitnikov <si...@gmail.com>
AuthorDate: Sat Mar 28 21:34:50 2020 +0300

    Improve quality for "Save node as image" action
    
    Use 24-bit colors and 2x scale (so the screenshot looks good on a HiDPI screens)
---
 .../apache/jmeter/save/SaveGraphicsService.java    | 26 +++++++++++-----------
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/src/core/src/main/java/org/apache/jmeter/save/SaveGraphicsService.java b/src/core/src/main/java/org/apache/jmeter/save/SaveGraphicsService.java
index 481ac73..eff4132 100644
--- a/src/core/src/main/java/org/apache/jmeter/save/SaveGraphicsService.java
+++ b/src/core/src/main/java/org/apache/jmeter/save/SaveGraphicsService.java
@@ -19,6 +19,7 @@ package org.apache.jmeter.save;
 
 import java.awt.Dimension;
 import java.awt.Graphics2D;
+import java.awt.geom.AffineTransform;
 import java.awt.image.BufferedImage;
 import java.io.File;
 import java.io.FileNotFoundException;
@@ -30,10 +31,9 @@ import javax.swing.JComponent;
 
 import org.apache.jmeter.util.JMeterUtils;
 import org.apache.jorphan.util.JOrphanUtils;
-import org.apache.xmlgraphics.image.codec.png.PNGEncodeParam;
-import org.apache.xmlgraphics.image.codec.png.PNGImageEncoder;
 import org.apache.xmlgraphics.image.codec.tiff.TIFFEncodeParam;
 import org.apache.xmlgraphics.image.codec.tiff.TIFFImageEncoder;
+import org.apache.xmlgraphics.image.writer.ImageWriterUtil;
 
 /**
  * Class is responsible for taking a component and saving it as a JPEG, PNG or
@@ -73,9 +73,17 @@ public class SaveGraphicsService {
      */
     public void saveJComponent(String filename, int type, JComponent component) {
         Dimension size = component.getSize();
-        BufferedImage image = new BufferedImage(size.width, size.height, BufferedImage.TYPE_BYTE_INDEXED);
+        int scale = 2;
+        BufferedImage image = new BufferedImage(size.width * scale, size.height * scale, BufferedImage.TYPE_INT_RGB);
         Graphics2D grp = image.createGraphics();
-        component.paint(grp);
+        try {
+            AffineTransform transform = new AffineTransform();
+            transform.setToScale(scale, scale);
+            grp.setTransform(transform);
+            component.paint(grp);
+        } finally {
+            grp.dispose();
+        }
 
         if (type == PNG) {
             filename += PNG_EXTENSION;
@@ -96,18 +104,10 @@ public class SaveGraphicsService {
      */
     public void savePNGWithBatik(String filename, BufferedImage image) {
         File outfile = new File(filename);
-        OutputStream fos = createFile(outfile);
-        if (fos == null) {
-            return;
-        }
-        PNGEncodeParam param = PNGEncodeParam.getDefaultEncodeParam(image);
-        PNGImageEncoder encoder = new PNGImageEncoder(fos, param);
         try {
-            encoder.encode(image);
+            ImageWriterUtil.saveAsPNG(image, 144, outfile);
         } catch (IOException e) {
             JMeterUtils.reportErrorToUser("PNGImageEncoder reported: "+e.getMessage(), "Problem creating image file");
-        } finally {
-            JOrphanUtils.closeQuietly(fos);
         }
     }