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()
。写入解决了问题?我还没有尝试过这个方法。但我是根据以下答案来做的: