php将图片文件转换成二进制输出的方法?
本文实例讲述了php将图片文件转换成二进制输出的方法。分享给大家供大家参考。
具体实现方法如下:
header("Content-type:image/jpeg")
;$PSize=filesize('1.jpg')
;$picturedata=fread(fopen('1.jpg',"r"),$PSize)
;echo$picturedata;就这么简单4行代码,就将图片以二进制流的形式输出到客户端了,和打开一张图片没有任何区别。这里需要注意的是,发送的header要根据具体情况而定,不一定都是image/jpeg。JPG的就是image/jpeg,但PNG的就是image/png.不同类型的图片输出不同的头部。希望本文所述对大家的php程序设计有所帮助。
base64的用途为什么图片要用base64转码?
因为传输信道只支持ASCII字符,不方便传输二进制流的场合。含有非ASCII字符,容易出现编码问题的场合。所以需要用base64转化为ascii字符。Base64用于将二进制数据编码成ASCII字符 (图片、文件等都可转化为二进制数据)
数据库如何存取图片?
对于一款系统而言,难免会涉及到用户上传的图片数据,为了保证数据落地我们需要把图片信息存入在数据库中,解决方案主要有以下两种:
1、将图片路径存入数据库中
这种做法是我们推荐的,因为数据数据一般较多较大,为便于存取我们一般将图片上传到服务器的某个目录中,然后将其引用路径存储到数据库中。这样一来,某条记录展示时就能找到与之对应的图片路径,然后加载引用即可。
2、将图片以二进制数据流形式写入数据库字段中
这种做法并不推荐,因为性能较低、占用存储空间较大,不利于数据库优化。具体做法是:图片上传时读取此图的二进制数据,然后存入数据库字段中,这里对数据库字段类型也是有一定要求的,比如说:MySQL中字段选BLOB类型、SQL Server中选image类型。
将图片二进制数据存入数据库后,如果要显示图片则需要从数据库中查询获取到二进制数据,然后前端读取base64二进制字符串,说实话这种形式不够优雅。
以上就是我的观点,对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流 ~ 我是科技领域创作者,十年互联网从业经验,欢迎关注我了解更多科技知识!
这涉及到字段类型的问题,如果使用二进制类型的字段就可以存放图片字段了!
我想题主要问的是如何将图片写入到数据库吧,这确实是个问题,文件是流,那写入也得使用流了,这就要求数据库驱动提供流写入方式了,还好大多驱动都实现了方法,比如JDBC,ODBC等,实在太多了,不过某些框架不提供功能!
还没有评论,来说两句吧...