当前位置: 首页 > 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;成…...

用STM32和GP2Y1014AU0F做个空气质量检测仪(附完整代码和接线图)

基于STM32的空气质量检测仪实战开发指南 最近几年&#xff0c;随着人们对健康生活环境的关注度不断提升&#xff0c;空气质量监测设备正从专业领域走向大众消费市场。作为一名嵌入式开发爱好者&#xff0c;我发现市面上的商用检测仪要么价格昂贵&#xff0c;要么功能单一&#…...

c语言基础实战:通过快马ai生成银行账户管理系统练手项目

今天想和大家分享一个用C语言实现的银行账户管理系统小项目。这个项目非常适合用来巩固C语言的基础知识&#xff0c;特别是结构体、指针和文件操作这些核心概念。我自己在学习过程中发现&#xff0c;通过实际项目练习&#xff0c;能更好地理解这些抽象的概念。 项目需求分析 …...

极速打造你的随身游戏宝库:Playnite便携版实战秘籍

极速打造你的随身游戏宝库&#xff1a;Playnite便携版实战秘籍 【免费下载链接】Playnite Video game library manager with support for wide range of 3rd party libraries and game emulation support, providing one unified interface for your games. 项目地址: https:…...

LangFlow问题解决:常见部署错误与连接Ollama配置详解

LangFlow问题解决&#xff1a;常见部署错误与连接Ollama配置详解 如果你正在尝试用LangFlow搭建自己的AI应用工作流&#xff0c;但卡在了部署和配置环节&#xff0c;这篇文章就是为你准备的。LangFlow作为一款低代码的可视化工具&#xff0c;理论上能让构建LangChain流水线变得…...

别再死记硬背了!用一张图+代码示例,彻底搞懂蓝牙BLE配对的6种SMP流程

蓝牙BLE安全配对实战图解&#xff1a;6种SMP流程与核心算法拆解 每次看到蓝牙协议栈里那些晦涩的安全管理协议&#xff08;SMP&#xff09;文档就头疼&#xff1f;别担心&#xff0c;今天我们用工程师的思维来重新解构这个"安全黑匣子"。扔掉那些让人昏昏欲睡的文字…...

Janus-Pro-7B自主部署:从nvidia-smi监控到supervisor服务管理

Janus-Pro-7B自主部署&#xff1a;从nvidia-smi监控到supervisor服务管理 1. 项目概述 Janus-Pro-7B是DeepSeek发布的一款统一多模态理解与生成模型&#xff0c;它突破了传统模型在处理不同任务时的冲突问题。这个模型支持图像问答、OCR识别、图表分析等多模态理解功能&#…...

Omni-Vision Sanctuary集成MySQL数据库:智能图像数据管理与检索实战

Omni-Vision Sanctuary集成MySQL数据库&#xff1a;智能图像数据管理与检索实战 1. 引言&#xff1a;当AI图像生成遇上数据库管理 想象一下这样的场景&#xff1a;你的设计团队每天使用Omni-Vision Sanctuary生成数百张创意图片&#xff0c;但很快发现这些数字资产变得难以管…...

Phi-3-mini-4k-instruct-gguf在中小企业内容运营中的应用:自动摘要与文案改写实战

Phi-3-mini-4k-instruct-gguf在中小企业内容运营中的应用&#xff1a;自动摘要与文案改写实战 1. 中小企业内容运营的痛点与机遇 对于中小企业来说&#xff0c;内容运营是品牌建设和客户沟通的重要环节。然而&#xff0c;在实际操作中&#xff0c;我们常常面临以下挑战&#…...

DanKoe 视频笔记:人生规划:20-30 岁是教程阶段,切勿虚度 [特殊字符]

在本节课中&#xff0c;我们将要学习如何正确看待并规划你的20-30岁。这个阶段并非人生的“主游戏”&#xff0c;而是关键的“教程”阶段。我们将探讨常见的陷阱和有效的策略&#xff0c;帮助你为未来打下坚实基础&#xff0c;避免陷入平庸的循环。 这封信的内容可能会让一些人…...

别再死记硬背了!用MATLAB 5分钟搞定控制系统的稳定裕度计算(附代码)

用MATLAB高效计算控制系统稳定裕度的工程实践指南 在自动控制系统的设计与分析中&#xff0c;稳定裕度是评估系统鲁棒性的关键指标。传统手工计算不仅耗时费力&#xff0c;还容易出错。本文将展示如何利用MATLAB这一强大工具&#xff0c;在5分钟内完成从传递函数定义到稳定裕度…...