gpt4 book ai didi

java - 如何从 InputStream 创建图像,调整大小并保存?

转载 作者:行者123 更新时间:2023-12-03 22:22:02 25 4
gpt4 key购买 nike

我有这个代码,我得到一个 InputStream 并创建一个图像:

Part file;
// more code
try {
InputStream is = file.getInputStream();

File f = new File("C:\\ImagenesAlmacen\\QR\\olaKeAse.jpg");

OutputStream os = new FileOutputStream(f);
byte[] buf = new byte[1024];
int len;

while ((len = is.read(buf)) > 0) {
os.write(buf, 0, len);
}

os.close();
is.close();

} catch (IOException e) {
System.out.println("Error");
}

问题是我必须在从 InputStream

创建 if 之前调整该图像的大小

那么如何调整我从 InputStream 获得的内容,然后创建调整后的图像。我想将图像的最大一侧设置为 180 像素,并按照该比例调整另一侧的大小。

示例:

图像 = 289px * 206px调整大小的图像 = 180px* 128px

最佳答案

我这样做了:

try {

InputStream is = file.getInputStream();
Image image = ImageIO.read(is);

BufferedImage bi = this.createResizedCopy(image, 180, 180, true);
ImageIO.write(bi, "jpg", new File("C:\\ImagenesAlmacen\\QR\\olaKeAse.jpg"));

} catch (IOException e) {
System.out.println("Error");
}

BufferedImage createResizedCopy(Image originalImage, int scaledWidth, int scaledHeight, boolean preserveAlpha) {
int imageType = preserveAlpha ? BufferedImage.TYPE_INT_RGB : BufferedImage.TYPE_INT_ARGB;
BufferedImage scaledBI = new BufferedImage(scaledWidth, scaledHeight, imageType);
Graphics2D g = scaledBI.createGraphics();
if (preserveAlpha) {
g.setComposite(AlphaComposite.Src);
}
g.drawImage(originalImage, 0, 0, scaledWidth, scaledHeight, null);
g.dispose();
return scaledBI;
}

而且我没有使用其他代码。

希望能帮助别人!

关于java - 如何从 InputStream 创建图像,调整大小并保存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24452332/

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