用 PHP 和 MySQL 保存和输出图片

在我们设计和制作网站的过程中,有时把图片保存到数据库中要比存成文件的形式更加方便。和MySQL这对黄金组合可以很容易的实现上述功能。在本文中,我们将会向读者介绍如何把图片保存到MySQL数据库中以及如何将数据库中的图片显示出来。

设置数据库 
    我们通常在数据库中所使用的文本或整数类型的字段和需要用来保存图片的字段的不同之处就在于两者所需要保存的数据量不同。MySQL数据库使用专门的字段来保存大容量的数据,数据类型为BLOB。

  MySQL数据库为BLOB做出的定义如下:BLOB数据类型是一种大型的二进制对象,可以保存可变数量的数据。BLOB具有四种类型,分别是 TINYBLOB,BLOB, MEDIUMBLOB 和LONGBLOB,区别在于各自所能够保存的最大数据长度不同。

  在介绍了所需要使用的数据类型之后,我们可以使用以下语句创建保存图象的数据表。 
    CREATE TABLE Images ( PicNum int NOT NULL AUTO_INCREMENT PRIMARY KEY, Image BLOB );

编写上传脚本 edu-cn.com 
    关于如何实现文件的上传,我们在这里就不再介绍了,感兴趣的读者可以参见“网页陶吧”内的相关文章。现在,我们主要来看一下如何接收上传文件并将其存入到MySQL数据库中。具体的脚本代码如下,其中我们假定文件上传域的名称为Picture。

<? 
If($Picture != "none") { 
  $PSize = filesize($Picture); 
  $mysqlPicture = addslashes(fread(fopen($Picture, "r"), $PSize)); 
  mysql_connect($host,$username,$password) or die("Unable to connect to SQL server"); 
  @mysql_select_db($db) or die("Unable to select database"); 
  mysql_query("INSERT INTO Images (Image) VALUES '($mysqlPicture')") or die("Can't Perform Query"); 
} else { 
  echo"You did not upload any picture"; 

?>

  这样,我们就可以成功的把图片保存到数据库中。如果在将图片插入MySQL的过程中出现问题,可以检查一下MySQL数据库所允许的最大数据包的大小。如果设置值过小的话,我们会在数据库的错误日志中找到相应的记录。

  下面,我们简单说明一下上述脚本程序。首先,我们通过“If($Picture != "none")”检查是否有文件被上传。然后,使用addslashes()函数避免出现数据格式错误。最后,连接MySQL,选择数据库并插入图片。

www.edu4u.com.cn

显示图片 
    在知道了如何将图片存入数据库之后,我们就需要考虑怎样才能从数据库中取出图片并在HTML页面中显示出来。这个过程要稍微复杂一些,下面我们就来介绍一下实现过程。

因为显示图片需要发送相应的标头,所以我们就会面临这样一个问题,那就是一次只能显示一副图片,因为我们无法在发出标头之后再发送其它的标头。

为了有效的解决这一问题,我们编写了两个文件。其中,第一个文件作为HTML页面的模板,定位图片的显示位置。第二个文件则被用来从数据库中实际输出文件流,作为<IMG>标签的SRC属性。

第一个文件的简单形式可以如下:

<HTML> 
<BODY> 
<? 
  mysql_connect($host,$username,$password) or die("Unable to connect to SQL server"); 
  @mysql_select_db($db) or die("Unable to select database"); 
  $result=mysql_query("SELECT * FROM Images") or die("Can't Perform Query"); 
  While($row=mysql_fetch_object($result)) { 
    echo "<IMG SRC=\"Second.php3? PicNum=$row->PicNum\">"; 
  } 
?> 
</BODY> 
</HTML> 
www.edu4u.com.cn

  当HTML页面被浏览时,每显示一副图片就会调用一次Second.php3文件。当第二个文件被调用时会传入相应的Picture ID,我们可以借此从数据库中取回对应的图片并显示。

Second.php3文件如下:

<? 
$result=mysql_query("SELECT * FROM Images WHERE PicNum=$PicNum") or die("Can't perform Query"); 
$row=mysql_fetch_object($result); 
Header( "Content-type: p_w_picpath/gif"); 
echo $row->Image; 
?>

转载于:https://blog.51cto.com/dbachina/772532

用 PHP 和 MySQL 保存和输出图片相关推荐

  1. securecrt导出linux日志文件,secureCRT保存屏幕输出内容

    1.有时执行一个mysql语句,屏幕打印行过多,需要设置翻动最大行数 打开Options Session Options–>Terminal–>Emulation,在Scrollback输 ...

  2. base64 去掉白边_LODOP直接用base64码输出图片

    Lodop中的ADD_PRINT_IMAGE,也可以直接输出base64码图片,不用加img标签,如果加了img标签,会被当做超文本对待,受浏览器引擎解析的影响. 什么时候使用base64码直接输出比 ...

  3. 【问题解决】微软OneNote使用笔记,Ditto解决OneNote复制粘贴文本输出图片问题

    微信关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 白嫖用onenote和onedrive有段时间了,简单粗暴好用,没得说. 先总结(BB ...

  4. 使用ffmpeg将BMP图片编码为x264视频文件,将H264视频保存为BMP图片,yuv视频文件保存为图片的代码

    ffmpeg开源库,实现将bmp格式的图片编码成x264文件,并将编码好的H264文件解码保存为BMP文件. 实现将视频文件yuv格式保存的图片格式的测试,图像格式png,jpg, gif等等测试均O ...

  5. 初学OpenCV:用本地摄像头拍照并保存为灰度图片

    初学OpenCV 用本地摄像头拍照并保存为灰度图片 import cv2 as cvdef openVideo():vix = cv.VideoCapture(0) #打开摄像头while True: ...

  6. UE4 如何将材质Material保存为本地图片Png

    昨日不可追, 今日尤可为.勤奋,炽诚,不忘初心 UE4 如何将材质Material保存为本地图片Png 下面这篇文章讲了如何将TextureRenderTarget2D保存为本地图片 https:// ...

  7. 图片存到服务器php,PHP肿么把图片数据保存为jpg图片到服务器目录

    第一步:通过$_FILES获取文件信息. 第二步:指定新文件名称以及路径,并赋值给一个变量. 第三步:通过move_uploaded_file上传文件. 第四步:上传成功后,将数值存入数据库服务器目录 ...

  8. Darknet YOLOv4批量检测图片并保存检测结果图片

    darknet版本YOLOv4,将darknet下src文件夹下的detector.c的test_detector函数整体替换,注意中间的更改保存输出图片的路径为自己路径:重新编译darknet. c ...

  9. 使用PS保存PDF为图片(JPG)

    网上有很多PDF转换工具,我也搜索了很多.下载下来出现了很多问题: 1.保存为图片后中文乱码. 2.保存后只有英文字母,没有中文. 所有网上的工具并不能实现将PDF页面完整的保存为图片的功能. === ...

最新文章

  1. windows系统杀掉explorer.exe进程后黑屏
  2. cloudera manage 4.8.6做hive元数据库主从同步后
  3. 装饰模式(Decorator)简介
  4. 被边缘化的“卓越亚马逊”
  5. 汉字笔画数据_把所有汉字叠起来会怎样?
  6. MVC源码分析 - Action查找和过滤器的执行时机
  7. leetcode224. 基本计算器
  8. vagrant 的安装与使用
  9. 机械自动化算不算计算机相关专业,机械工程及自动化属于工程类或工程经济类专业吗?...
  10. python基础教程视频优酷_Python快速入门视频
  11. CPU HQ 什么意思
  12. 【懒人福利】自动记录操作步骤
  13. visual basic 6 下载 和 Vb6sp6 下载
  14. 项目管理案例分析:如何通过黄金圈法则建立共识?
  15. sql数据库去重语法_sql数据库查询语句去重
  16. 8.利用红外遥控信号控制LED灯的亮灭
  17. 使用virtualenv搭建Python下的Flask开发环境,ubu测试有效
  18. What is WPK (PowerShell Kit) ?
  19. webmatrix安装_指南:使用Microsoft WebMatrix进行WordPress开发
  20. 使用STM32 ST-LINK Utility 烧录程序,ST LINK烧录程序,解锁FLASH

热门文章

  1. 人工智能之机器学习常见算法
  2. SAP WM Storage Type下不允许负库存的设置
  3. 干货丨计算机视觉必读:图像分类、定位、检测,语义分割和实例分割方法梳理(经典长文,值得收藏)
  4. 模拟电路人工智能神经网络的前景
  5. 虚拟在左,真实在右:德国学者用AI合成一亿像素逼真3D图像,可任意旋转
  6. 寒武纪开盘暴涨350%,市值突破1000亿,85后创始人身家超300亿!千亿盛宴背后隐忧不可忽视!...
  7. Science:睡眠剥夺影响大脑思考竟是因为蛋白质罢工了!
  8. ACL 2019年度回顾:自然语言处理发展趋势
  9. 半导体行业必将再火十年!两大趋势成发展新动能
  10. 2019年25大人工智能趋势!一文看到未来