我在Jmeter中编写BeanShell Sampler代码以获取图像宽度,这是我们从之前的jmeter http请求获得的。
byte[] samplerdata=ctx.getPreviousResult().getResponseData();
如何存储上述代码中的图像,并获取图像的宽度和高度?
答案 0 :(得分:1)
最简单的方法是使用ImageIO包。
示例代码:
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
byte[] samplerData=ctx.getPreviousResult().getResponseData();
InputStream in = new BufferedInputStream(new ByteArrayInputStream(samplerData));
String mimeType = URLConnection.guessContentTypeFromStream(in);
BufferedImage image = ImageIO.read(in);
int width = image.getWidth();
int height = image.getHeight();
String extension = mimeType.split("/")[1];
File file = new File("image." + extension);
ImageIO.write(image, extension, file);
return "Written image: " + file.getAbsolutePath() + "; width: " + width + "; height: " + height;
我们不建议使用Beanshell进行脚本编写,因为它有一些已知的性能问题,并且在严重负载的情况下可能会破坏您的测试。
根据JMeter Best Practices,最好使用JSR223测试元素和#34; groovy"作为一种语言。
请参阅Beanshell vs JSR223 vs Java JMeter Scripting: The Performance-Off You've Been Waiting For!指南,了解groovy脚本引擎安装说明,脚本最佳模式和不同的脚本引擎基准。
不要担心兼容性,因为有效的Java或Beanshell代码在99%的情况下都是有效的Groovy代码。