php从数据库中取二进制流文件转换为图片,图片以二进制流存入数据库实现

因为图片是以二进制流存入数据库的image类型,想要显示图片时,必须对取出的数据进行解码.这个问题让我就结了很长时间.解决方法,直接上代码:二进制转换

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. function data_uri($contents, $mime)  
  2. {  
  3.   
  4.     $base64   = base64_encode($contents);  
  5.       
  6.     return ('data:' . $mime . ';base64,' . $base64);  
  7. }  
调用方法

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. //获得头像路径  
  2. function getpicsrc()  
  3. {  
  4.     $db=new db();  
  5.   
  6.     $sql="select  *  from pictable";  
  7.      
  8.     $res=$db->query($sql);  
  9.   
  10.   
  11.   
  12.     $pic=$res[0];  
  13.     
  14.     $src=data_uri($pic,'image/png');  
  15.   
  16.   
  17.     return $src;  
  18. }  
显示图像

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. $src=getpic($tel);//获得头像  

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <img style="border-radius: 50%;" src="<?php echo $src;?>">  

可能遇到的问题:取出的图片显示不全

这与php配置有关,修改一下Php.ini文件

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. odbc.defaultlrl = 8M  

将图片转换为二进制流保存到数据库中image类型

1根据图片路径将图片转化为二进制流

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. //图片转二进制,$pic为图片路径  
  2.           $content=file_get_contents($pic);  
2获取的二进制进行格式化

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. $content="0x".bin2hex($content);  

3插入数据表

            $sql="INSERT INTO[sPic]) VALUES (0x".bin2hex($content))";
注意在使用Thinkphp自带的数据插入方法时总是报错,因为它会将spic的值自动加上单引号,插入的时候就被认为是字符串型,插入就会失败

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值