gpt4 book ai didi

java - 使用java从mysql数据库检索图像以存储在本地磁盘上时出现问题

转载 作者:行者123 更新时间:2023-11-29 21:43:12 28 4
gpt4 key购买 nike

我将图像转换为bytes[],然后转换为Blob后,使用java将图像存储到mysql数据库。图片格式为png尝试从 mysql 数据库检索图像并将其转换为图像文件以保存在本地磁盘上。

将 mysql 结果集迭代为:

while(rs.next())
{
ByteArrayInputStream bis = new ByteArrayInputStream(rs.getBytes("image"));

Iterator<?> readers = ImageIO.getImageReadersByFormatName("png");
ImageReader reader = (ImageReader) readers.next();
Object source = bis;

ImageInputStream iis = ImageIO.createImageInputStream(source);
reader.setInput(iis, true);
ImageReadParam param = reader.getDefaultReadParam();

Image image= reader.read(0, param);
BufferedImage bufferedImage = new BufferedImage(image1.getWidth(null), image.getHeight(null), BufferedImage.TYPE_INT_RGB);

Graphics2D g2 = bufferedImage.createGraphics();
g2.drawImage(image, null, null);

File imageFile = new File(rs.getInt("id")+".png");
ImageIO.write(bufferedImage, "png", imageFile);
}

但它给了我错误:

javax.imageio.IIOException: I/O error reading PNG header!

其原因是:

javax.imageio.IIOException: Bad PNG signature!

我是java新手。我用谷歌搜索但没有找到任何令人满意的解决方案。任何人都可以帮助我解决它或任何其他更好的解决方案来从数据库检索图像并存储在本地磁盘中???

最佳答案

我找到了解决方案。问题出在我的代码中。这是我用来从数据库获取图像并将其存储为图像文件的正确代码

sql="select * from image_data where image_id="+image_id;        
rs = this.runSimpleQuery(sql);
while (rs.next())
{
Blob image_blob=rs.getBlob("image_100x100");
int blobLength = (int) image_blob.length();
byte[] blobAsBytes = image_blob.getBytes(1, blobLength);
InputStream in=new ByteArrayInputStream( blobAsBytes );
BufferedImage image_bf = ImageIO.read(in);
ImageIO.write(image_bf, "PNG", new File(folder_path+"/"+rs.getString("name")));
}

关于java - 使用java从mysql数据库检索图像以存储在本地磁盘上时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34320899/

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