Java Base64修剪我的缩略图图像

Java Base64修剪我的缩略图图像,java,imgscalr,Java,Imgscalr,我有一些问题很难解决 我制作了一个简短的代码片段: BufferedImage image = ImageIO.read(new ByteArrayInputStream(payload)); BufferedImage thumbImg = Scalr.resize(image, Method.QUALITY, Mode.AUTOMATIC, WIDTH, HEIGHT, Scalr.OP_ANTIALIAS); ByteArrayOutputStream baos = new By

我有一些问题很难解决

我制作了一个简短的代码片段:

BufferedImage image = ImageIO.read(new ByteArrayInputStream(payload));
BufferedImage thumbImg = Scalr.resize(image, Method.QUALITY,
    Mode.AUTOMATIC, WIDTH, HEIGHT, Scalr.OP_ANTIALIAS);

ByteArrayOutputStream baos = new ByteArrayOutputStream();
Base64OutputStream b64s = new Base64OutputStream(baos);
ImageIO.write(thumbImg, DATA_TYPE, b64s);
return baos.toByteArray();
返回的缩略图/字节将被缩减。它删除了底部部分,只显示一个透明区域

我想要的是有一个缩小的图像,而不删除它的某些部分


这样做的目的是将base64返回到我的html项目中。

是。。我刚刚更改了创建base64输出的逻辑

而不是让它在Apache Commons框架的Base64OutputStream中编写

ByteArrayOutputStream baos = new ByteArrayOutputStream();
Base64OutputStream b64s = new Base64OutputStream(baos);
ImageIO.write(thumbImg, DATA_TYPE, b64s);
return new ThumbnailPayload(baos.toByteArray()));
我是这样做的

ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(thumbImg, DATA_TYPE, baos);
return new ThumbnailPayload(Base64.encodeBase64(baos.toByteArray()));

目前它正在工作。但是,如果你们能在一天结束前提出另一种解释方法,那将是非常棒和有用的。

如果您将文件写入文件系统而不是Base64OutputStream,并在图像查看器中打开它,您会看到什么?啊,但我不想将其写入文件系统,因为这只是一个临时文件。用户已经上传了文件,我只想给他预览/他上传的文件缩略图。我明白;只是尝试限制因素的数量,以便更容易确定是哪一个因素导致了问题。对于旧代码,在调用
ImageIO之后,是否在Base64OutputStream上调用
flush()
close()
。写入
解决了问题?我还没有尝试过这个方法。但我是根据以下答案来做的: