gpt4 book ai didi

java - Liferay DLFileEntry 图像转换未完全转换图像

转载 作者:搜寻专家 更新时间:2023-11-01 03:35:14 24 4
gpt4 key购买 nike

我正在使用以下代码将图像作为 DLFileEntry 从 JPG 格式转换为 PNG 格式。

    try {
DLFileEntry dlFileEntry = DLFileEntryServiceUtil.getFileEntry(dlFileEntryId);
InputStream inputStream = dlFileEntry.getContentStream();

ByteArrayOutputStream buffer = new ByteArrayOutputStream();
int nRead;
byte[] data = new byte[1024];
while ((nRead = inputStream.read(data, 0, data.length)) != -1) {
buffer.write(data, 0, nRead);
}
buffer.flush();
byte[] byteArray = buffer.toByteArray();

ImageBag imageBag = ImageToolUtil.read(byteArray);
RenderedImage renderedImage = imageBag.getRenderedImage();
if (renderedImage == null) {
throw new IOException("Unable to decode image");
}

renderedImage = ImageToolUtil.scale(renderedImage, 2000);

buffer = new ByteArrayOutputStream();
ImageIO.write(renderedImage, "png", buffer);
InputStream fis = new ByteArrayInputStream(buffer.toByteArray());

DLAppServiceUtil.updateFileEntry(
dlFileEntry.getFileEntryId(),
dlFileEntry.getName(),
MediaType.IMAGE_PNG_VALUE,
dlFileEntry.getTitle(),
dlFileEntry.getDescription(),
"",
true,
fis,
buffer.size(),
serviceContext);

} catch (Exception e) {
e.printStackTrace();
}

即使它更新了“文档和媒体”中的图像内容类型和扩展名,当我们尝试下载图像时,它仍然是 JPG 格式。

enter image description here

图像在文档和媒体中看起来像上图。可以看到内容类型变成了image/png

enter image description here

上面显示了我尝试下载此图像并保存时的屏幕截图。下载的时候还是原来的JPG格式。除了上面的代码,我还应该做什么才能将图像完全转换为 PNG?

最佳答案

您仍然存储旧文件名:dlFileEntry.getName()

我猜测 jpegjpg 是旧文件名的扩展名,浏览器根据扩展名确定他的文件过滤器。

所以最好也交换扩展名:

DLAppServiceUtil.updateFileEntry(
dlFileEntry.getFileEntryId(),
dlFileEntry.getName().replaceAll("\\..*?$",".png"),
...

这将更改为该文件存储的扩展名

关于java - Liferay DLFileEntry 图像转换未完全转换图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34064026/

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