【邂逅BUG】从imagecreatefromX图片创建函数引起的BUG的排查经验
来源:互联网 发布:在哪里可以买淘宝号 编辑:程序博客网 时间:2024/05/16 18:34
问题
公司的网站项目为了做到自动发布,需要给项目搬个家,换到了另一台服务器,但由于是LAMP环境没有配置好,导致一些问题。
比如今早遇到的这个问题,登录网站在会员中心上传名片(使用了jQuery Jcrop裁剪插件),提示“Call to undefined function imagecreatefrom()”。
解决思路
由于笔者对图形处理函数不是太熟,百度了一把,发现实际上是不存在这样一个函数imagecreatefrom()的,而只有这样四个函数imagecreatefromjpeg,imagecreatefrompng,imagecreatefromgif,imagecreatefrombmp,通常用在截图时需要创建个新尺寸的图片。立马想到在程序里肯定进行了函数名拼装,而拼装的是图片文件类型,进而找到了getimagesize($img)是这个函数没有获取到图片属性信息,再检查图片路径,发现路径是正常的,但在浏览器中访问不到,由此判断图片应该是没有上传成功,最终找到file图片文件夹没有写权限的原因。将file文件夹赋予写权限得到完美解决。
附截图程序代码:
private function _resize($img,$width=360,$height=240) { $temp = array(1=>'gif', 2=>'jpeg', 3=>'png'); $targ_w = $width; $targ_h = $height; $jpeg_quality = 90; list($ow, $oh, $tmp) = getimagesize($img); $tmp = $temp[$tmp]; $infunc = "imagecreatefrom$tmp"; $outfunc = "image$tmp"; $img_r = $infunc($img); $dst_r = ImageCreateTrueColor( $targ_w, $targ_h ); imagealphablending($dst_r,false); //重要 直接用$dst_r图像颜色替换,包括透明色 imagesavealpha($dst_r,true); //重要 不要丢失$dst_r图像的透明色 if($_POST['w']==0||$_POST['h']==0){ imagecopyresampled($dst_r,$img_r,0,0,$_POST['x'],$_POST['y'],$targ_w,$targ_h,$ow,$oh); }else{ imagecopyresampled($dst_r,$img_r,0,0,$_POST['x'],$_POST['y'],$targ_w,$targ_h,$_POST['w'],$_POST['h']); } $outfunc($dst_r,$img); //return $img; }
补习知识点
imagecreatefromjpeg($img) //由jpg文件或jpg URL 创建一个新图象
imagecreatefrompng($img) //由png文件或png URL 创建一个新图象
imagecreatefromgif($img) //由gif文件或gif URL 创建一个新图象
imagecreatefrombmp($img) //由bmp文件或bmp URL 创建一个新图象
getimagesize($img) //获取图片宽高、类型信息函数
返回数据如下:
Array( [0] => 156 [1] => 45 [2] => 3 //1表示gif, 2表示jpeg, 3表示png [3] => width="156" height="45" [bits] => 8 [mime] => image/png)
0 0
- 【邂逅BUG】从imagecreatefromX图片创建函数引起的BUG的排查经验
- 一个由sscanf函数引起的bug
- unsigned引起的bug
- typedef引起的bug
- 从unique_ptr赋值到shared_ptr引起的指针悬空bug
- 从string引起的串扰bug说起
- 缺jar引起的bug
- memcpy引起的一个bug
- 字符串拷贝引起的bug
- 一个分号引起的bug
- Environment.CurrentDirectory引起的BUG
- 小问题引起的bug
- 一次memcpy引起的bug
- redis - 空格引起的bug
- 字段定义引起的bug
- 一个BUG引起的思考
- RCP打包后图片资源缺失引起的bug
- 注意flash4的函数可能引起的bug
- 单例模式续
- Linux-系统运维监控工具-概述
- Scrapy学习-1
- 线段树 水题----今天先写点初学者的基础
- redis3.0.7连接 <java>
- 【邂逅BUG】从imagecreatefromX图片创建函数引起的BUG的排查经验
- 选择的文件是解决方案文件 但是用此应用程序的较新版本创建的,无法打开
- QtWidgets继承关系树
- Ubuntu 14.04安装dede织梦管理系统
- mvn plugin checkstyle/findbugs/pmd在多module项目中的使用
- TCP连接TIME_WAIT和CLOSE_WAIT状态
- LeetCode题目难度分布(含面试频率及使用的数据结构与算法)
- boost.asio之异步编程
- 27. Remove Element