首页 / PHP / PHP裁剪图片并存入mysql
PHP裁剪图片并存入mysql
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP裁剪图片并存入mysql,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2092字,纯文字阅读大概需要3分钟。
内容图文
![PHP裁剪图片并存入mysql](/upload/InfoBanner/zyjiaocheng/154/c1a0bc9df1a843e3bd53db269af1831b.jpg)
$picFile = $_FILES["picFileName"];
$picType = $picFile["type"];
$picData = file_get_contents($tempFile);
如果不需要更改图片大小而直接存入mysql,可以如下简单实现$tempFile = $picFile["tmp_name"];
$picData = base64_encode($picData);
$query = "INSERT INTO image
(imgid, image, imgtype)
values(
null,
'$picData',
'$picType'
);";
$link->query($query);但如果要更改图片大小并以字符流的形式获得图片数据,则需要一点小技巧:
首先完成裁剪图片,获取图片对象list($picW, $picH) = getimagesize($tempFile);
if($picW>600){ //超出大小
$src = imagecreatefromjpeg($tempFile); //获取原图数据
$nW =550;
$nH = $picH*$nW/$picW;
$newPicTemp = imagecreatetruecolor($nW,$nH); //创建彩色图片对象
imagecopyresampled($newPicTemp,$src,0,0,0,0,$nW,$nH,$picW,$picH);
}这一步以后 newPicTemp 就是 resource 型的图片数据了,问题来了,观察上方代码,file_get_contents 返回的类型是 string,也是 base64_encode 的参数类型。 如何把 resource 转为 string 类型呢。 经过学习发现 PHP 有个这个函数string ob_get_contents ( void )以字符串的形式返回输出缓冲区中的内容。
因此,思路就是把 resource 图片输出到缓冲区,然后用一个对象获取其内容。代码如下ob_start(); //开启输出缓冲区
imagejpeg($newPicTemp); //这个函数可以显示出图片,同时也是把数据输出
$imgContent = ob_get_contents(); //获取字符流
ob_end_clean(); //关闭并清除缓冲区
$picData = base64_encode($imgContent); //不要忘记转码
这样一来,就获得更改大小后的图片字符流了,可以存入mysql
最后销毁临时数据imagedestroy($src);
imagedestroy($newPicTemp);
如果需要读取并显示图片,可以使用如下代码$query = "SELECT image, imgtype from image where imgid = $imgid ;";
$result = $link->query($query);
$row = mysqli_fetch_array($result);
$data = base64_decode( $row["image"]);
$type = $row["imgtype"];
ob_clean();
header("Content-Type:'$type'");
echo $data;
可以看出几个关键函数都含有 ob 标识。 ob 即 output buffer,是 PHP 非常关键且有用的一项工具参考 php.com
以上就介绍了PHP裁剪图片并存入mysql,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
内容总结
以上是互联网集市为您收集整理的PHP裁剪图片并存入mysql全部内容,希望文章能够帮你解决PHP裁剪图片并存入mysql所遇到的程序开发问题。
如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。
来源:【匿名】