mysql存读图片_mysql如何储存读取图片
mysql储存读取图片的方法:首先将图片转换成缓冲流;然后获得图片的字节数组并执行相关操作;最后通过“public void MapSearchQuery(out byte[] imageByteResulet){...}”读取图片即可。
首先,介绍一下mysql相关的数据类型:MySQL中有四种BLOB类型,TinyBlob(最大255Byte), Blob(最大65K), MediunBlob(16M), LongBlob(最大4G)。这里注意一下如果你数据库出现相关的Data too long...字样可能是你选择的种类的大小不够。
接下来简单说一下我为什么没有用存储图片路径的方式,而采取了直接在MySQL中存储图片的方式。原因有两点:
1、本身不需要大量图片,一个数据库只需要一张图片
2、软件结构是要通过WebService由一个主客户端去访问下面附属的几个客户端,如果附属客户端不存储图片直接供主客户端访问,那么主客户端势必就需要一个加载图片的功能(类似于FTP的功能)。
下面还是直接上代码吧:public bool MapSearchWrite(string strImagePath)
{
//将图片转换成缓冲流
FileStream fs = new FileStream(strImagePath, FileMode.Open, FileAccess.Read);
//获得图片的字节数组
byte[] byImage = new byte[fs.Length];
fs.Read(byImage, 0, byImage.Length);
fs.Close();
//数据库连接
MySqlConnection conn = new MySqlConnection();
conn.ConnectionString = "Server=localhost;Uid=root;Password=123456;Database=firefighting;charset=gb2312";
try
{
conn.Open();
}
catch
{
conn.Close();
conn.Dispose();
throw new ArgumentException("地图检索数据库连接失败");
}
//判断数据库内部有无记录
string strQueryCmd = "select PicNum from images";
MySqlCommand cmdQuery = new MySqlCommand(strQueryCmd, conn);
MySqlDataReader dataReader = cmdQuery.ExecuteReader();
//执行操作
MySqlCommand cmd = new MySqlCommand();
if (dataReader.Read())
{
cmd.CommandText = "update images set Image=@byImage";
}
else
{
cmd.CommandText = "insert into images(Image) values(@byImage)";
}
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add("@byImage", MySqlDbType.MediumBlob);
cmd.Parameters[0].Value = byImage;
cmd.Connection = conn;
int affectedRows = 0;
try
{
affectedRows = cmd.ExecuteNonQuery();
}
catch
{
affectedRows = -1;
}
//关闭连接等
cmd.Dispose();
conn.Close();
conn.Dispose();
if (affectedRows <= 0)
{
return false;
}
else
{
return true;
}
}
这是把图片插入到数据库的操作代码,路径的话就是你所需要存储的图片所在的路径(包括图片的名字和后缀名哦),另外我这里采用的是ADO.NET的连接方式,语言是C#的,其他代码也不用我解释了......
下面是读取MySQL中的图片的代码public void MapSearchQuery(out byte[] imageByteResulet)
{
imageByteResulet = null;
MySqlConnection conn = new MySqlConnection();
conn.ConnectionString = "Server=localhost;Uid=root;Password=123456;Database=firefighting;charset=gb2312";
try
{
conn.Open();
}
catch
{
conn.Close();
conn.Dispose();
throw new ArgumentException("地图检索数据库连接失败");
}
string strQueryCmd = "select Image from images limit 1";
MySqlCommand cmd = new MySqlCommand(strQueryCmd, conn);
MySqlDataReader dataReader = null;
try
{
dataReader = cmd.ExecuteReader();
}
catch
{
dataReader.Dispose();
cmd.Dispose();
conn.Close();
conn.Dispose();
throw new ArgumentException("地图检索查询地图失败");
}
if (dataReader.Read())
{
imageByteResulet = new byte[dataReader.GetBytes(0, 0, null, 0, int.MaxValue)];
dataReader.GetBytes(0, 0, imageByteResulet, 0, imageByteResulet.Length);
//将图片字节数组加载入到缓冲流
// MemoryStream imageStream = new MemoryStream(imageByte);
//从缓冲流生成图片
//imageResulet = Image.FromStream(imageStream, true);
}
dataReader.Dispose();
cmd.Dispose();
conn.Close();
conn.Dispose();
}
当然这里我是照顾到Image对象不能通过WebService传输而把BLOB数据只转换成byte[]在传输,如果不需要这个功能的换可以直接把相关代码踢出来再将byte[]转成图片对象即可,一下提供两种方法
第一种:imageByte是调用上面函数得到的byte[]的数据//将图片字节数组加载入到缓冲流
MemoryStream imageStream = new MemoryStream(imageByte);
//从缓冲流生成图片
imageResulet = Image.FromStream(imageStream, true);
//pictureBox是一个显示图片或者视频的C#控件
pictureBox.Image = imageResulet;
这样就把图片读取出来并显示出来了
第二种:BitMap是System.Drawingm命名空间中的Bitmap bm = new Bitmap(new MemoryStream(
imageByte
));
pictureBox1.Image = bm;
那么,到此我就说完了,当然不是迫不得已不要把图片存到数据库中,可以做个url映射,返回文件流(这个目前没试过,有时间试过后再把经验分享给大家)。
mysql存读图片_mysql如何储存读取图片相关推荐
- c#form+mysql储存读取图片_C#从SQL server数据库中读取l图片和存入图片
本实例主要介绍如何将图片存入数据库.将图片存入数据库,首先要在数据库中建立一张表,将存储图片的字段类型设为Image类型,用FileStream类.BinaryReader把图片读成字节的形式,赋给一 ...
- MySQL不可读举例_MySQL事务隔离级别与相关示例(脏读、不可重复读、幻读)
目录 MySQL8中隔离级别的变量跟之前的版本不一样,之前是tx_isolation,MySQL8改成了transaction_isolation.查看当前隔离级别的命令是 mysql> sel ...
- python读取图片的格式_python读取图片并修改格式与大小的方法
本文实例为大家分享了python读取图片并修改文件大小的具体代码,供大家参考,具体内容如下 # Author:NDK # -*- coding:utf-8 -*- from PIL import Im ...
- python打开图片文件-Python怎么读取图片
用于机器学习也好,深度学习也好,都需要读取图片的操作. 方法一:利用PIL中的Image函数,这个函数读取出来不是array格式(推荐学习:Python视频教程) 这时候需要用 np.asarray( ...
- python导入图片数据_Python中读取图片的6种方式
Python进行图片处理,第一步就是读取图片,这里给大家整理了6种图片的读取方式,并将读取的图片装换成numpy.ndarray()格式.首先需要准备一张照片,假如你有女朋友的话,可以用女朋友的,没有 ...
- java获取图片的分辨率_Java读取图片分辨率
代码依赖于其他工具包,下载请移步:http://download.csdn.net/detail/zhaoguoshuai91/9231957 废话不多说,直接上代码 public class Ima ...
- mysql 幻读理解_Mysql 幻读 的一些个人理解
背景 由于最近在准备换工作,所以开始补充一些基础知识,以前准备的时候总是去硬背一些知识点,这次花了不少时间去问了问为什么,年前对于幻读的内容有了点心得,为了不遗忘,也是为了只有能讲出来才算是真的理解了 ...
- php mysql 插入图片_mysql中怎样插入图片
mysql中插入图片的方法:首先要在数据库中建表:然后装载JDBC驱动,建立连接:最后创建Statement接口类,来执行SQL语句即可. mysql中插入图片的方法: 1.首先,先要在数据库中建表. ...
- MySQL表如何导入图片_mysql中怎样插入图片
mysql中插入图片的方法:首先要在数据库中建表:然后装载JDBC驱动,建立连接:最后创建Statement接口类,来执行SQL语句即可. mysql中插入图片的方法: 1.首先,先要在数据库中建表. ...
最新文章
- 华为路由器qos car+nat+dhcp+vlan配置心得
- Lombok(1.14.8) - @Synchronized
- Markdown简单上手
- 【401天】跃迁之路——程序员高效学习方法论探索系列(实验阶段158-2018.03.13)...
- ProxySQL!像C罗一样的强大!
- sql 导入excel 遇到问题
- 【Udacity项目】TMDb电影数据集探索分析
- llama是什么动物_羊驼(Alpaca)与骆马(Llama)
- 知识体系结构---备份
- VUE项目学习(二):学习项目文件结构
- Java中的NaN(非数)、Infinity(无穷大)
- 如何让tomcat告别频繁重启
- ES6中setTimeout函数的this
- [2023-01 持续更新] 谷歌学术google镜像/Sci-Hub可用网址/Github镜像可用网址总结
- C语言学生成绩管理系统文档版,C语言学生信息管理系统(完整版)总结.docx
- 给中国学生的第三封信——成功、自信、快乐
- 玫琳凯首席创新官Lucy Gildea在2022年妇女和女童参与科学国际日的声明
- Android APN设置接口
- PEP8规范的中文版
- 推荐几个设计或写文档时经常用到的无版权的图片库,以备不时这需
热门文章
- joomla之T3框架使用教程1----安装
- 找不到 配置管理器。sql server 2008 r2 在win10下
- 18. Fabric2.2 区块链农产品溯源系统 - 多Orderer部署(扩展)
- WD My Cloud安装迅雷远程下载固件
- 618 系列篇丨电商平台大促期间精准营销“五步”走法则
- Wiki Windows环境下搭建Wiki.js
- 异常检测 Deep One-Class Classification
- 基于概率分析的智能AI扫雷程序秒破雷界世界纪录
- 平板电脑可以打开HTML吗,网页体验 Flash无压力_平板电脑_平板电脑评测-中关村在线...
- Antrea-数据流分析