gpt4 book ai didi

java - 改变图像质量

转载 作者:行者123 更新时间:2023-11-30 04:07:11 25 4
gpt4 key购买 nike

我正在尝试用 Java 创建远程控制应用程序。我正在使用机器人捕获屏幕图像,然后需要将其发送到服务器。但是,由于图像尺寸可能太大,无法尽快发送,因此我正在更改代码中的图像质量。

问题出在我的代码上,更改图像后它会自动将其另存为我的计算机中的文件,但我不希望它这样做。我希望它能够在不保存的情况下进行更改,以便能够将其发送到我的服务器

代码:

Robot robot = null;
Rectangle rectangle = null;
GraphicsEnvironment gEnv=GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice gDev=gEnv.getDefaultScreenDevice();

//Get screen dimensions
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
rectangle = new Rectangle(dim);

System.out.println(rectangle);
robot = new Robot(gDev);
BufferedImage image = robot.createScreenCapture(rectangle);


// FileInputStream inputStream = new FileInputStream(MyFile);
// BufferedImage originalImage = ImageIO.read(inputStream);
Iterator iter = ImageIO.getImageWritersByFormatName("jpeg");
ImageWriter writer = (ImageWriter)iter.next();
ImageWriteParam iwp = writer.getDefaultWriteParam();
iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
float quality = 0.25f; // reduce quality by 50%
iwp.setCompressionQuality(quality);
File file = new File("Tester6.png");

FileImageOutputStream output = new FileImageOutputStream(file);
writer.setOutput(output);

IIOImage image1 = new IIOImage(image, null, null);

writer.write(null, image1, iwp);
writer.dispose();

最佳答案

不要创建文件,而是执行以下操作:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageOutputStream ios = ImageIO.createImageOutputStream(baos);
writer.setOutput(ios);

然后,您可以在调用 writer.write() 后使用 baos.toByteArray() 获取字节。

关于java - 改变图像质量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20477984/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com