2

我有一些我很难解决的问题。

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

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 项目。

4

1 回答 1

1

是的..我只是改变了创建base64输出的逻辑。

而不是让它写在 Apache Commons Framework 的 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()));

目前它正在工作。但是,如果你们能在一天结束之前提出另一种解释方式,那就太棒了,也很有帮助。

于 2016-03-08T01:33:34.627 回答