Ecshop后台上传图片后强制转换成jpg格式的小bug的调试方法
Ecshop这个开源的程序有些小小的bug,因此很多使用这个开源程序的站长朋友们都会进行二次开发和维护。今天无忧主机小编也找到了一个小小的bug ,那就是在Ecshop后台上传图片有的是jpeg,png,gif等格式的图片,但是经过上传后会被强制转换为通用的jpg格式的。小编感觉挺神奇的,也许不只是小编这样想,很多站长朋友们有时候按照需要也是想要保留上传时候的图片格式吧,于是小编到数据库中查看了下保存的路径也是转换为了jpg格式的。小编仔细对程序和模板进行了分析和调试,经过小编一番倒腾后终于找到了这个小小的bug的改善方法。下面小编为大家分享下具体的解决方案。
首先找到主机根目录下的文件includes\cls_image.php 文件。大概在此程序的262行找到这个函数:function_exists(‘imagejpeg’)。
把以下代码替换,具体如下所示:
if (function_exists(‘imagejpeg’))
{
$filename .= ‘.jpg’;
imagejpeg($img_thumb, $dir . $filename,95);
}
elseif (function_exists(‘imagegif’))
{
$filename .= ‘.gif’;
imagegif($img_thumb, $dir . $filename);
}
elseif (function_exists(‘imagepng’))
{
$filename .= ‘.png’;
imagepng($img_thumb, $dir . $filename);
}
else
{
$this->error_msg = $GLOBALS[‘_LANG’][‘creating_failure’];
$this->error_no = ERR_NO_GD;
return false;
}
修改为:
/* 生成文件 */
if ($org_info[‘mime’]==’image/jpeg’)
{
$filename .= ‘.jpg’;
imagejpeg($img_thumb, $dir . $filename,95);
}
elseif ($org_info[‘mime’]==’image/gif’)
{
$filename .= ‘.gif’;
imagegif($img_thumb, $dir . $filename);
}
elseif ($org_info[‘mime’]==’image/png’)
{
$filename .= ‘.png’;
imagepng($img_thumb, $dir . $filename);
}
else
{
$this->error_msg = $GLOBALS[‘_LANG’][‘creating_failure’];
$this->error_no = ERR_NO_GD;
return false;
}
其实这是个if判断,而无忧主机小编修改的本质是把: function_exists(‘imagejpeg’) 修改成了 $org_info[‘mime’]==’image/jpeg’。修改完成后再检查一编是否修改到位。确认按照修改后保存上传到对应的路径下替换原程序文件。这时候我们再登陆Ecshop的网站后台在网站的右上角有个更新缓存,更新缓存后小编又试着传了一张png格式的商品图片发布到网站的前台。这时候点击属性查看的时候果然是png格式的了。感谢大家对无忧主机的大力支持,小编也希望以后能写出更加优秀的文章帮到大家。
相关文章推荐阅读: