Java 数据库image型输出图片

有一些程序在sqlserver中存储图片的方式是通过二进制存储导数据库的,那么保存进去之后,怎么把图片显示出来呢?直接上代码,servlet后台代码:byte[]b1=””;//数据库查询出来的二进制InputStreamin=newByteArrayInputStream(b1);response.setContentType(“image/jpg”);Outpu…

大家好,又见面了,我是你们的朋友全栈君。

有一些程序在sql server中存储图片的方式是通过二进制存储导数据库的,那么保存进去之后,怎么把图片显示出来呢?

直接上代码,servlet后台代码:

byte[] b1 = ””;//数据库查询出来的二进制
InputStream in = new ByteArrayInputStream(b1);
response.setContentType("image/jpg");
OutputStream out = response.getOutputStream();
byte[] b2 = new byte[1024];
int j = 0;
while ((j = in.read(b2)) != -1) {
	out.write(b2, 0, j);
}
out.flush();
out.close();
in.close();

因为数据库存储的image类型对应Java的数据类型是byte[]型,所以这边是用byte[]型来接受图片数据,然后在jsp这边:

<img src="/servlet/showImageServlet" style="border-radius:10px;width:100px; height:50px;">

然后在浏览器上就直接显示该图片了:

Java 数据库image型输出图片

还可以将数据库的图片查询出来并保存到相对应的系统文件夹:

byte[] bytes1 = “”//数据库查询出来的二进制;
ByteArrayInputStream bais = new ByteArrayInputStream(bytes1);
BufferedImage bi1 = ImageIO.read(bais);
File w2 = new File("c://新建文件夹", "照片名字.jpg");// 可以是jpg,png,gif格式
ImageIO.write(bi1, "jpg", w2);// 不管输出什么格式图片,此处不需改动

当然,如果数据库是多张图片的话,就给个循环把所有图片都输出就可以了:

Java 数据库image型输出图片

以下两个方法是byte2hex()二进制转字符、hex2byte()字符转二进制代码:

public static String byte2hex(byte[] b) // 二进制转字符串
	{
		StringBuffer sb = new StringBuffer();
		String stmp = "";
		for (int n = 0; n < b.length; n++) {

			stmp = Integer.toHexString(b[n] & 0XFF);
			if (stmp.length() == 1) {
				sb.append("0" + stmp);
			} else {
				sb.append(stmp);
			}
		}
		return sb.toString();
	}
	public static byte[] hex2byte(String str) { // 字符串转二进制
		if (str == null)
			return null;
		str = str.trim();
		int len = str.length();
		if (len == 0 || len % 2 == 1)
			return null;
		byte[] b = new byte[len / 2];
		try {
			for (int i = 0; i < str.length(); i += 2) {
				b[i / 2] = (byte) Integer
						.decode("0X" + str.substring(i, i + 2)).intValue();
			}
			return b;
		} catch (Exception e) {
			return null;
		}
	}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/129466.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • form表单提交后如何弹出对话框_ajax提交form表单数据

    form表单提交后如何弹出对话框_ajax提交form表单数据定义一个函数:functionsumbit_sure(){vargnl=confirm(“确定要提交?”);if(gnl==true){returntrue;}else{returnfalse;}}然后在form的onsubmit里调用就可以了:

    2022年10月7日
    0
  • BN层原理解析_视频解析接口原理

    BN层原理解析_视频解析接口原理前几天看了BN的那篇经典论文《《BatchNormalization_AcceleratingDeepNetworkTrainingbyReducingInternalCovariateShift》,心中留有很多疑惑,今天大概弄明白了,这里记录一下。1训练数据为什么要和测试数据同分布?看看下图,如果我们的网络在左上角的数据训练的,已经找到了两者的分隔面w,如果测试数据是右下角…

    2022年10月15日
    0
  • 图形的遍历

    图形的遍历一个图形G=(V,E),存在某一顶点v,希望从v开始,通过此顶点相邻的顶点而去访问G中其他顶点直达全部的顶点遍历完毕。在遍历的过程中可能会重复经过某些顶点及边线,经由图形的遍历可以判断该图形是否连通,并找出连通单元和路径。图形遍历有两种方法:深度优先搜索Deep-First-Search广度优先搜索Breadth-First-Search一、深度优先搜索从图形的某一顶点开始遍历,被访问过的

    2022年6月8日
    47
  • TOR架构_中国有多少大数据中心

    TOR架构_中国有多少大数据中心1、前言最近在看《云数据中心网络技术》,学习了企业数据中心网络建设过程,看到有ToR和EoR两种布线方式,之前没有接触过,今天总结一下。2、布线方式ToR:(TopofRack)接入方式就是

    2022年8月6日
    4
  • MIPI协议的DCS指令格式[通俗易懂]

    MIPI协议的DCS指令格式[通俗易懂]虽然读了几遍MIPIPHY/DSI/DCS标准,还是有点糊涂,把DataType和DCScommand有些混淆,浪费了不少的时间。ILI9488的指令中把DCSPacket的组成用图示展示了出来,非常直观,真是一图胜千言啊!回头再看DSI的文字描述就印象深刻了,巨坑啊!!!

    2022年5月27日
    36
  • GM8018 多路高压电平转换和功率驱动控制器

    GM8018 多路高压电平转换和功率驱动控制器

    2021年7月29日
    62

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号