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如何储存读取图片相关推荐

  1. c#form+mysql储存读取图片_C#从SQL server数据库中读取l图片和存入图片

    本实例主要介绍如何将图片存入数据库.将图片存入数据库,首先要在数据库中建立一张表,将存储图片的字段类型设为Image类型,用FileStream类.BinaryReader把图片读成字节的形式,赋给一 ...

  2. MySQL不可读举例_MySQL事务隔离级别与相关示例(脏读、不可重复读、幻读)

    目录 MySQL8中隔离级别的变量跟之前的版本不一样,之前是tx_isolation,MySQL8改成了transaction_isolation.查看当前隔离级别的命令是 mysql> sel ...

  3. python读取图片的格式_python读取图片并修改格式与大小的方法

    本文实例为大家分享了python读取图片并修改文件大小的具体代码,供大家参考,具体内容如下 # Author:NDK # -*- coding:utf-8 -*- from PIL import Im ...

  4. python打开图片文件-Python怎么读取图片

    用于机器学习也好,深度学习也好,都需要读取图片的操作. 方法一:利用PIL中的Image函数,这个函数读取出来不是array格式(推荐学习:Python视频教程) 这时候需要用 np.asarray( ...

  5. python导入图片数据_Python中读取图片的6种方式

    Python进行图片处理,第一步就是读取图片,这里给大家整理了6种图片的读取方式,并将读取的图片装换成numpy.ndarray()格式.首先需要准备一张照片,假如你有女朋友的话,可以用女朋友的,没有 ...

  6. java获取图片的分辨率_Java读取图片分辨率

    代码依赖于其他工具包,下载请移步:http://download.csdn.net/detail/zhaoguoshuai91/9231957 废话不多说,直接上代码 public class Ima ...

  7. mysql 幻读理解_Mysql 幻读 的一些个人理解

    背景 由于最近在准备换工作,所以开始补充一些基础知识,以前准备的时候总是去硬背一些知识点,这次花了不少时间去问了问为什么,年前对于幻读的内容有了点心得,为了不遗忘,也是为了只有能讲出来才算是真的理解了 ...

  8. php mysql 插入图片_mysql中怎样插入图片

    mysql中插入图片的方法:首先要在数据库中建表:然后装载JDBC驱动,建立连接:最后创建Statement接口类,来执行SQL语句即可. mysql中插入图片的方法: 1.首先,先要在数据库中建表. ...

  9. MySQL表如何导入图片_mysql中怎样插入图片

    mysql中插入图片的方法:首先要在数据库中建表:然后装载JDBC驱动,建立连接:最后创建Statement接口类,来执行SQL语句即可. mysql中插入图片的方法: 1.首先,先要在数据库中建表. ...

最新文章

  1. 华为路由器qos car+nat+dhcp+vlan配置心得
  2. Lombok(1.14.8) - @Synchronized
  3. Markdown简单上手
  4. 【401天】跃迁之路——程序员高效学习方法论探索系列(实验阶段158-2018.03.13)...
  5. ProxySQL!像C罗一样的强大!
  6. sql 导入excel 遇到问题
  7. 【Udacity项目】TMDb电影数据集探索分析
  8. llama是什么动物_羊驼(Alpaca)与骆马(Llama)
  9. 知识体系结构---备份
  10. VUE项目学习(二):学习项目文件结构
  11. Java中的NaN(非数)、Infinity(无穷大)
  12. 如何让tomcat告别频繁重启
  13. ES6中setTimeout函数的this
  14. [2023-01 持续更新] 谷歌学术google镜像/Sci-Hub可用网址/Github镜像可用网址总结
  15. C语言学生成绩管理系统文档版,C语言学生信息管理系统(完整版)总结.docx
  16. 给中国学生的第三封信——成功、自信、快乐
  17. 玫琳凯首席创新官Lucy Gildea在2022年妇女和女童参与科学国际日的声明
  18. Android APN设置接口
  19. PEP8规范的中文版
  20. 推荐几个设计或写文档时经常用到的无版权的图片库,以备不时这需

热门文章

  1. joomla之T3框架使用教程1----安装
  2. 找不到 配置管理器。sql server 2008 r2 在win10下
  3. 18. Fabric2.2 区块链农产品溯源系统 - 多Orderer部署(扩展)
  4. WD My Cloud安装迅雷远程下载固件
  5. 618 系列篇丨电商平台大促期间精准营销“五步”走法则
  6. Wiki Windows环境下搭建Wiki.js
  7. 异常检测 Deep One-Class Classification
  8. 基于概率分析的智能AI扫雷程序秒破雷界世界纪录
  9. 平板电脑可以打开HTML吗,网页体验 Flash无压力_平板电脑_平板电脑评测-中关村在线...
  10. Antrea-数据流分析