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);
}
}