gpt4 book ai didi

thymeleaf - 使用 Thymeleaf 显示 Base64String 图像

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

我将 jpg 图像存储在数据库中(作为字节数组)。我想避免在网页上显示之前放入文件系统。

单元测试表明数据库存储和检索工作正常,没有损坏。 Fies可以从数据库中提取并转换回jpg文件

使用以下代码将图像转换为字节数组并存储在数据库中:

public static byte[] getImageAsBytes(BufferedImage buffer) throws IOException
{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(buffer, "jpg", baos);
baos.flush();
byte[] imageInByte = baos.toByteArray();
baos.close();
return imageInByte;

}

我有一个 ViewWrapperMediaImage 类,其中包含从数据库检索的字节数组。该类还有一个将 bytearray 转换为 base64 String 的方法。

package jake.prototype2.controller.viewwrapper;

import org.apache.commons.codec.binary.Base64;

import jake.prototype2.model.assessment.MediaImage;
import jake.prototype2.model.assessment.TestStructureException;
import jake.prototype2.model.structure.InterfacePersistenceBean;

public class ViewWrapperMediaImageCreate extends ViewWrapperTestContentElementCreate
{

private byte[] image;

protected String mediaFileName;

private static final long serialVersionUID = 4181515305837289526L;

public ViewWrapperMediaImageCreate(InterfacePersistenceBean persistenceBean) throws TestStructureException
{
....
}
}

public byte[] getImage()
{
return image;
}

public String generateBase64Image()
{
return Base64.encodeBase64URLSafeString(this.getImage());
}

public void setImage(byte[] image)
{
this.image = image;
}

public String getMediaFileName()
{
return mediaFileName;
}

public void setMediaFileName(String mediaFileName)
{
this.mediaFileName = mediaFileName;
}
}

然后我的 Thymeleaf 磁贴调用转换方法generateBase64Image():

<img  th:src="@{'data:image/jpeg;base64,'+${vwNewTestContentElement.generateBase64Image()}}" />

这不起作用。

生成的html源码如下:

 &lt; img src="data:image/jpeg;base64,_9j_4AAQSkZJRgABAgAAAQABAAD_2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL_2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL_wAARCADhASwDASIAAhEBAxEB_8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL_8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4-Tl5ufo6erx8vP09fb3-....

任何提示将不胜感激

最佳答案

好吧,事实证明这非常简单,我在提出问题后 2 分钟内就解决了,但我敢打赌其他人也会有同样的问题。

答案是不要使用 URLSafe

它适用于encodeBase64String()

关于thymeleaf - 使用 Thymeleaf 显示 Base64String 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33045743/

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