当前位置: 首页 > news >正文

读取sqlserver数据库中varbinary(max)类型的内容,并将图片信息显示在前端页面

目录

1.varbinary(max)的说明

2.图片显示

3.总结


1.varbinary(max)的说明

varbinary(max) 是一种SQL Server数据库字段类型,用于存储二进制数据,可以存储最大长度的二进制数据。以下是关于 varbinary(max) 的说明:

  • 存储容量: 可以存储最大长度为 2^31-1 字节(即 2,147,483,647 字节),这使得它非常适合存储大型二进制数据,例如图片、音频或视频文件等。

  • 用途: 主要用于存储不需要字符集或排序规则的二进制数据,通常是不需要进行文本排序或比较的数据。

  • varbinary 的区别: varbinary(max) 可以存储超过 8,000 字节的数据,而 varbinary 有大小限制,最大长度为 8,000 字节。

  • 数据处理: 在数据库中存储的二进制数据可以是任何类型的文件或数据流,通过数据库管理系统可以进行存储、检索和管理。

总结而言,varbinary(max) 是SQL Server中用于存储大型二进制数据的灵活且高容量的字段类型,适合于需要存储大型文件或二进制数据流的场景。

2.图片显示

①使用mybatis查询二进制数据

Object selImageInfo(@Param("docId") Integer docId, @Param("id") Integer id, @Param("docType") DocTypeEntity docType, @Param("dbName") String dataIndex);
    <select id="selImageInfo" resultType="java.lang.Object">SELECTFile_Images.fi_ImageFROM ${docType.tableName},File_ImagesWHERE ${docType.tableName}.${docType.uniqueKey} = #{id}and doc_id = #{docId}and ${docType.tableName}.${dbName} = File_Images.fi_Id</select>

查询结果返回Object类型,网上有说使用byte[]作为返回值,我使用的时候报错:

[B cannot be cast to [Ljava.lang.Object;"表示尝试将一个字节数组(字节数组在Java中表示为byte[])转换成Object数组,但这是不兼容的转换。

②将字节数组转换为base64格式的字符串

Object image = mapper.selImageInfo(docId, id, docType, column.getDataIndex());String base64Encoded = Base64.getEncoder().encodeToString((byte[])image);// ByteArrayInputStream bis = new ByteArrayInputStream((byte[])image);// BufferedImage imageInfo = ImageIO.read(bis);//// // 缩放比例为0.5// double scale = 0.5;//// int targetWidth = (int) (imageInfo.getWidth() * scale);// int targetHeight = (int) (imageInfo.getHeight() * scale);//// BufferedImage resizedImage = new BufferedImage(targetWidth, targetHeight, imageInfo.getType());// Image img = imageInfo.getScaledInstance(targetWidth, targetHeight, Image.SCALE_SMOOTH);// resizedImage.createGraphics().drawImage(img, 0, 0, null);//// // 将图片转换为Base64// ByteArrayOutputStream baos = new ByteArrayOutputStream();// ImageIO.write(resizedImage, "jpg", baos);// byte[] imageBytes = baos.toByteArray();// String base64String = Base64.getEncoder().encodeToString(imageBytes);

将sql返回object变量强转为byte数组,然后转换为base64格式的字符串。

后面注释的代码的进行图片的缩放处理,也可以在前端控制图片的显示大小。

③显示图片

html

    <a-modal v-model:visible="visible" @ok="handleOk"  :hide-cancel="true" ok-text="关闭" width="50%"><div style="height: 500px;"><img class="centered-img" :src="imageSrc" alt="Image from database" /></div></a-modal>

js

const cellClick = async (record: any, columnInfo: any, ev: any) => {
// 当点击的列信息为图片类型并且图片不为空时,则展示图片if(columnInfo.colType == 16 && record[columnInfo.dataIndex]){// 查询图片信息const reqBody = {docId:prop.docId,id:record.id,column:columnInfo}const res = await getImage(reqBody)imageSrc.value = 'data:image/jpg;base64,' +  resvisible.value = true}
}

css

.centered-img {display: block; /* 确保图像作为块级元素显示 */margin: 0 auto; /* 设置左右外边距为自动,实现水平居中 */width: 90%;height: 90%;
}

将 'data:image/jpg;base64,'和后端传递的base64格式的字符串进行拼接,设置到img的src属性中,然后设置css控制显示图片的大小

3.总结

imageIO的使用

Java ImageIO 类详解-CSDN博客

相关文章:

读取sqlserver数据库中varbinary(max)类型的内容,并将图片信息显示在前端页面

目录 1.varbinary(max)的说明 2.图片显示 3.总结 1.varbinary(max)的说明 varbinary(max) 是一种SQL Server数据库字段类型&#xff0c;用于存储二进制数据&#xff0c;可以存储最大长度的二进制数据。以下是关于 varbinary(max) 的说明&#xff1a; 存储容量: 可以存储最大…...

orcad导出pdf 缺少title block

在OrCAD中导出PDF时没有Title Block 最后确认问题在这里&#xff1a; 要勾选上Title Block Visible下面的print...

XML 验证器:确保数据完整性和准确性的关键工具

XML 验证器&#xff1a;确保数据完整性和准确性的关键工具 引言 在当今数字化时代&#xff0c;数据的有效管理和交换至关重要。XML&#xff08;可扩展标记语言&#xff09;作为一种用于存储和传输数据的语言&#xff0c;广泛用于各种应用程序和系统之间。为确保XML数据的完整…...

opencv学习:图像视频的读取截取部分图像数据颜色通道提取合并颜色通道边界填充数值计算图像融合

一、计算机眼中的图像 1.图像操作 构成像素点的数字在0~255之间 RGB叫做图像的颜色通道 h500&#xff0c;w500 2.灰度图像 3. 彩色图像 4.图像的读取 5.视频的读取 cv2.VideoCapture()--在OpenCV中&#xff0c;可以使用VideoCapture来读取视频文件&#xff0c;或是摄像头数…...

数据结构——单链表详解(超详细)(2)

前言&#xff1a; 上一篇文章小编简单的介绍了单链表的概念和一些函数的实现&#xff0c;不过为了保证文章的简洁&#xff0c;小编把它分成了两篇来写&#xff0c;这一篇小编紧接上一篇文章继续写单链表函数功能的实现&#xff1a; 目录&#xff1a; 1.单链表剩余函数的编写 1.…...

类和对象(2

*续上文中的运算符重载 4 重载运算符时,有前置和后置的,运算符重载的函数名都是operator, 无法很好区分 所以c规定,后置重载时,增加一个int形参 与前置做区分 5 重载<<和>>时需要重载为全局函数, 因为重载为成员函数时, this指针默认抢占了第一个形参位, 第一个形参…...

AcWing 668. 游戏时间2

读取四个整数 A,B,C,D&#x1d434;,&#x1d435;,&#x1d436;,&#x1d437;&#xff0c;用来表示游戏的开始时间和结束时间。 其中 A&#x1d434; 和 B&#x1d435; 为开始时刻的小时和分钟数&#xff0c;C&#x1d436; 和 D&#x1d437; 为结束时刻的小时和分钟数。…...

AI发展下的伦理挑战,应当如何应对?

针对人工智能&#xff08;AI&#xff09;发展中面临的伦理挑战&#xff0c;构建一个全面、有效的治理体系至关重要。以下是对三大关键方向——隐私保护、算法公正与透明度、深度伪造管控——的深入探讨与具体实践方案&#xff1a; 方向一&#xff1a;构建可靠的AI隐私保护机制…...

Java面试题--JVM大厂篇之深入解析JVM中的Serial GC:工作原理与代际区别

目录 引言&#xff1a; 正文&#xff1a; 一、Serial GC工作原理 年轻代垃圾回收&#xff08;Minor GC&#xff09;&#xff1a; 老年代垃圾回收&#xff08;Major GC或Full GC&#xff09;&#xff1a; 二、年轻代和老年代的区别 年轻代&#xff08;Young Generation&a…...

网络安全高级工具软件100套

1、 Nessus&#xff1a;最好的UNIX漏洞扫描工具 Nessus 是最好的免费网络漏洞扫描器&#xff0c;它可以运行于几乎所有的UNIX平台之上。它不止永久升级&#xff0c;还免费提供多达11000种插件&#xff08;但需要注册并接受EULA-acceptance–终端用户授权协议&#xff09;。 它…...

Ubuntu 添加gcc头文件搜索路径

对个人用户生效 sudo vim ~/.bashrc在该文件末尾添加 #gcc C_INCLUDE_PATH$C_INCLUDE_PATH:your_path export C_INCLUDE_PATH #g CPLUS_INCLUDE_PATH$CPLUS_INCLUDE_PATH:your_path export CPLUS_INCLUDE_PATH最后&#xff0c;重启终端即可生效 可用以下命令查看搜索路径 ec…...

c++写数据结构进入文件

以下定义一个数据结构 struct SData {std::string url;int number;std::string memo; };写入文件 void StorageDataToFile(const std::string& filename, const SData& data) {std::ofstream outFile(filename);if (outFile.is_open()) {// 使用std::stringstream格式…...

Java实验4

实验内容 考试题 要求在一个界面内至少显示5道选择题&#xff0c;每道题4个选项。题目从数据库读取。表结构自定义。 另有2个命令按钮&#xff0c;分别为“重新答题”&#xff08;全部选项及正确答题数清空&#xff09;和“提交”&#xff08;计算&#xff09;&#xff0c;在…...

优化 Java 数据结构选择与使用,提升程序性能与可维护性

优化 Java 数据结构选择与使用&#xff0c;提升程序性能与可维护性 引言 在软件开发中&#xff0c;数据结构的选择是影响程序性能、内存使用以及代码可维护性的关键因素之一。Java 作为一门广泛使用的编程语言&#xff0c;提供了丰富的内置数据结构&#xff0c;如数组、链表、…...

华为USG6000V防火墙安全策略用户认证

目录 一、实验拓扑图 二、要求 三、IP地址规划 四、实验配置 1&#x1f923;防火墙FW1web服务配置 2.网络配置 要求1&#xff1a;DMZ区内的服务器&#xff0c;办公区仅能在办公时间内(9:00-18:00)可以访问&#xff0c;生产区的设备全天可以访问 要求2&#xff1a;生产区不…...

Windows 应急响应手册v1.2 -百度网盘下载

家好&#xff0c;《Windows 应急响应手册 v1.2》 发布啦&#xff01; 本次是一个大更新&#xff0c;解决了两个大问题&#xff0c;添加了4个大的事件处置流程以及一些更新&#xff0c;下载链接在文末 两个大问题是&#xff1a; Windows 平台的 Adobe acrobat DC 、Firefox 浏…...

Billu_b0x靶机

信息收集 使用arp-scan 生成网络接口地址来查看ip 输入命令&#xff1a; arp-scan -l 可以查看到我们的目标ip为192.168.187.153 nmap扫描端口开放 输入命令&#xff1a; nmap -min-rate 10000 -p- 192.168.187.153 可以看到开放2个端口 nmap扫描端口信息 输入命令&…...

GitHub+Picgo图片上传

Picgo下载&#xff0c;修改安装路径&#xff0c;其他一路下一步&#xff01; 地址 注册GitHub&#xff0c;注册过程不详细展开&#xff0c;不会的百度一下 地址 新建GitHub仓库存放图片 ——————————————————————————————————————————…...

springboot的事务管理

在yml配置文件中添加以下&#xff1a;logging.level.org.springframework.jdbc.support.JdbcTransactionManagerdebug...

深入解析rsync:定义、架构、原理、应用场景及实战指南

前言 在现代数据管理和传输过程中&#xff0c;数据同步工具起着至关重要的作用。特别是在需要高效、可靠地在不同服务器或设备之间传输大量数据时&#xff0c;选择一款优秀的数据同步工具显得尤为重要。在众多工具中&#xff0c;rsync以其高效、灵活、可靠的特点&#xff0c;成…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码&#xff1a;‘allure’ &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;ڲ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ⲿ&#xfffd;&#xfffd;&#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;ǿ&#xfffd;&am…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么&#xff1f;1.1.2 感知机的工作原理 1.2 感知机的简单应用&#xff1a;基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

多模态图像修复系统:基于深度学习的图片修复实现

多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...

代码规范和架构【立芯理论一】(2025.06.08)

1、代码规范的目标 代码简洁精炼、美观&#xff0c;可持续性好高效率高复用&#xff0c;可移植性好高内聚&#xff0c;低耦合没有冗余规范性&#xff0c;代码有规可循&#xff0c;可以看出自己当时的思考过程特殊排版&#xff0c;特殊语法&#xff0c;特殊指令&#xff0c;必须…...

python爬虫——气象数据爬取

一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用&#xff1a; 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests&#xff1a;发送 …...

MySQL 主从同步异常处理

阅读原文&#xff1a;https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主&#xff0c;遇到的这个错误&#xff1a; Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一&#xff0c;通常表示&#xff…...

JDK 17 序列化是怎么回事

如何序列化&#xff1f;其实很简单&#xff0c;就是根据每个类型&#xff0c;用工厂类调用。逐个完成。 没什么漂亮的代码&#xff0c;只有有效、稳定的代码。 代码中调用toJson toJson 代码 mapper.writeValueAsString ObjectMapper DefaultSerializerProvider 一堆实…...