因为图片是以二进制流存入数据库的image类型,想要显示图片时,必须对取出的数据进行解码.这个问题让我就结了很长时间.解决方法,直接上代码:二进制转换
- function data_uri($contents, $mime)
- {
- $base64 = base64_encode($contents);
- return ('data:' . $mime . ';base64,' . $base64);
- }
- //获得头像路径
- function getpicsrc()
- {
- $db=new db();
- $sql="select * from pictable";
- $res=$db->query($sql);
- $pic=$res[0];
- $src=data_uri($pic,'image/png');
- return $src;
- }
- $src=getpic($tel);//获得头像
- <img style="border-radius: 50%;" src="<?php echo $src;?>">
可能遇到的问题:取出的图片显示不全
这与php配置有关,修改一下Php.ini文件
- odbc.defaultlrl = 8M
将图片转换为二进制流保存到数据库中image类型
1根据图片路径将图片转化为二进制流
- //图片转二进制,$pic为图片路径
- $content=file_get_contents($pic);
- $content="0x".bin2hex($content);
3插入数据表
$sql="INSERT INTO[sPic]) VALUES (0x".bin2hex($content))";
注意在使用Thinkphp自带的数据插入方法时总是报错,因为它会将spic的值自动加上单引号,插入的时候就被认为是字符串型,插入就会失败