用JAVA怎样将保存在数据库BLOB类型的图片取出来转换为图片然后在页面展示啊

用JAVA怎样将保存在数据库BLOB类型的图片取出来转换为图片然后在页面展示啊,第1张

呵呵,这个是没有办法接受哦。

request.setCharacterEncoding("UTF-8")

response.setContentType("image/jpeg")

response.getOutputStream().write(bytes)

这几个参数是把这个图片直接发给浏览器,说白了就直接把图片当成文件让浏览器下载。

解决办法:

<img border=0 src="localhost:8080/Pic" />

localhost:8080是你配置WEB.XML

Pic是你的Servlet类名。

我直接把做验证码的代码发出来了。如果你不是要做验证码。那你自己看下就知道你问题的答案了。

//清空浏览器缓存。确保验证图片更换

response.setHeader("Cache-Control","no-cache")

response.setHeader("Pragma", "no-cache")

response.setDateHeader("Expires", -1)

//以图片形式打开数据

response.setHeader("Content-Type","image/jpeg")

//response.setContentType("image/jpeg")

//在内存中创建一副图片

BufferedImage image=new BufferedImage(80,30,BufferedImage.TYPE_INT_RGB)

//在图片上写数据

Graphics g=image.getGraphics()

g.setColor(Color.black)

//画个宽为80.、高30的实心矩形刚好将图片遮盖

g.fillRect(0, 0, 80, 30)

//设置图片上字体的颜色及格式

g.setColor(Color.red)

g.setFont(new Font("宋体",Font.BOLD,20))

//将字体写入图片

String num=makeNum()

//将字串保存到session中

request.getSession().setAttribute("checkcode", num)

//写字符串。坐标是从基线为准。

g.drawString(num, 0, 20)

//将图片输出给浏览器。参数分别为要写入的 RenderedImage。 包含格式非正式名称的 String。 将在其中写入数据的 OutputStream。

ImageIO.write(image, "jpg",response.getOutputStream())

}

public String makeNum(){

Random r=new Random()

String num=r.nextInt(10000000)+""

StringBuffer stringBuffer=new StringBuffer()

for (int i = 0i <7-num.length()i++) {

stringBuffer.append("0")

}

num=stringBuffer.toString()+num

return num

}

java对于文件的处理都可以用二进制流处理。new file然后将流写进去就可以了,根据你命名的文件后缀名去区分是什么类型的文件,对于二进制流来说没有什么类型的,所以你说的这种转换我不太明白。如果是将存储在数据库的二进制流拿到之后展示,有两种方式,一种是将二进制流写入到磁盘然后通过路径访问,一种是直接输出二进制流到呈现的view(如果你的view支持的话)。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9620170.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存