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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • docker部署mysql 实现远程连接[通俗易懂]

    1.dockersearchmysql查看mysql版本2.dockerpullmysql要选择starts最高的那个name进行下载3.dockerimages查看下载好的镜像4.启动mysql实例dockerrun–namedockermysql-p3307:3306-eMYSQL_ROOT_PASS…

    2022年4月11日
    45
  • server.mappath方法详解

    server.mappath方法详解server.mappath方法详解server.mappath方法整理,可供需求的朋友参考./当前目录 /网站主目录 ../上层目录 ~/网站虚拟目录 如果当前的网站目录为E:\wwwroot应用程序虚拟目录为E:\wwwroot\company浏览的页面路径为E:\wwwroot\company\news\show.asp 在show.a

    2022年7月12日
    18
  • eXtremeComponents安装配置

    eXtremeComponents安装配置eXtremeComponents直接下载地址http://sourceforge.net/projects/extremecomp/中文文档:http://lanxin1985.javaeye.

    2022年7月2日
    27
  • Android-WItemTouchHelperPlus几行代码搞定仿QQ侧滑

    Android-WItemTouchHelperPlus几行代码搞定仿QQ侧滑

    2021年5月27日
    101
  • pycharm安装使用_anaconda环境变量配置

    pycharm安装使用_anaconda环境变量配置1.打开AnacondaPrompt,进入虚拟环境condaactivateTF1.142.安装pyinstaller,在anaconda中输入pipinstallPyInstaller3.在pycharm中配置pyinstaller打开Pycharm,进入settings按下图操作3.1点击ExternalTools3.2点击新建3.3输入任意名称3.4在E:\RuanJian\Anaconda\anzhuang\envs\TF1.14\Scripts\路径

    2022年8月26日
    4
  • 基本全局阈值法(basic global thresholding)MATLAB实现

    基本全局阈值法(basic global thresholding)MATLAB实现基本全局阈值分割步骤如下:(1)设定参数,并选择一个初始的估计阈值。(2)用阈值分割图像。将图像分成两部分:是由灰度值大于的像素组成,是由灰度值小于或等于的像素组成。(3)计算和中所有像素的平均灰度值和,以及新的阈值。(4)如果,则推出即为最优阈值;否则,将赋值给,并重复步骤(2)~(4),直到获取最优阈值。其具体实现MATLAB代码如下:%i…

    2022年5月24日
    33

发表回复

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

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