首页CMS解决DedeCMS使用中缩略图变形的问题(改配置文件或自定义尺寸缩略图)

解决DedeCMS使用中缩略图变形的问题(改配置文件或自定义尺寸缩略图)

时间2024-05-23 01:38:03发布访客分类CMS浏览157
导读:DedeCMS 织梦程序虽然目前有两个版本,一个是原来的官方版本,一个是目前也称作Dedecms的商业版本,但是考虑到版权开源等的问题,我们可能较多的人还是会使用早期的版本。目前DedeCMS版本是到5.7版本,但是我们是否有发现在上传或者...

DedeCMS 织梦程序虽然目前有两个版本,一个是原来的官方版本,一个是目前也称作Dedecms的商业版本,但是考虑到版权开源等的问题,我们可能较多的人还是会使用早期的版本。目前DedeCMS版本是到5.7版本,但是我们是否有发现在上传或者自动上传的图片然后对应有缩略图的主题的时候缩略图是变形的,没有自动等比缩放或者裁剪。

如果遇到这个问题如何解决呢?

这里老蒋找到V5.7的解决办法,我们需要找到/include/helpers/中的image.helper.php文件。

if (!function_exists('ImageResize')) {
    function ImageResize($srcFile, $toW, $toH, $toFile = "") {
            global $cfg_photo_type;
        if ($toFile == "") {
                $toFile = $srcFile;
        }
            $info = "";
            $srcInfo = GetImageSize($srcFile, $info);
        switch ($srcInfo[2]) {
        case 1:            if (!$cfg_photo_type['gif']) {
                    return false;
            }
                $im = imagecreatefromgif($srcFile);
                break;
        case 2:            if (!$cfg_photo_type['jpeg']) {
                    return false;
            }
                $im = imagecreatefromjpeg($srcFile);
                break;
        case 3:            if (!$cfg_photo_type['png']) {
                    return false;
            }
                $im = imagecreatefrompng($srcFile);
                break;
        case 6:            if (!$cfg_photo_type['bmp']) {
                    return false;
            }
                $im = imagecreatefromwbmp($srcFile);
                break;
        }
            $srcW = ImageSX($im);
            $srcH = ImageSY($im);
            if ($srcW = $toW &
    &
 $srcH = $toH) {
                return true;
        }
            //缩略生成并裁剪        $newW = $toH * $srcW / $srcH;
            $newH = $toW * $srcH / $srcW;
            if ($newH >
= $toH) {
                $ftoW = $toW;
                $ftoH = $newH;
        }
 else {
                $ftoW = $newW;
                $ftoH = $toH;
        }
            if ($srcW >
     $toW || $srcH >
 $toH) {
            if (function_exists("imagecreatetruecolor")) {
            @$ni = imagecreatetruecolor($ftoW, $ftoH);
                if ($ni) {
                        imagecopyresampled($ni, $im, 0, 0, 0, 0, $ftoW, $ftoH, $srcW, $srcH);
                }
 else {
                        $ni = imagecreate($ftoW, $ftoH);
                        imagecopyresized($ni, $im, 0, 0, 0, 0, $ftoW, $ftoH, $srcW, $srcH);
                }
            }
 else {
                    $ni = imagecreate($ftoW, $ftoH);
                    imagecopyresized($ni, $im, 0, 0, 0, 0, $ftoW, $ftoH, $srcW, $srcH);
            }
                //裁剪图片成标准缩略图            $new_imgx = imagecreatetruecolor($toW, $toH);
                if ($newH >
= $toH) {
                    imagecopyresampled($new_imgx, $ni, 0, 0, 0, ($newH - $toH) / 2, $toW, $toH, $toW, $toH);
            }
 else {
                    imagecopyresampled($new_imgx, $ni, 0, 0, ($newW - $toW) / 2, 0, $toW, $toH, $toW, $toH);
            }
            switch ($srcInfo[2]) {
                case 1:                imagegif($new_imgx, $toFile);
                    break;
                case 2:                imagejpeg($new_imgx, $toFile, 85);
                    break;
                case 3:                imagepng($new_imgx, $toFile);
                    break;
                case 6:                imagebmp($new_imgx, $toFile);
                    break;
                default:                return false;
            }
                imagedestroy($new_imgx);
                imagedestroy($ni);
        }
            imagedestroy($im);
            return true;
    }
}
    

这是解决办法,可以实现等比缩放,但是不能自动裁剪。老蒋以前给企业做网站的时候如果有需要用到缩略图的时候,我是单独给缩略图自定义个标签,然后单独上传对应尺寸大小的缩略图,这样是最为体验好的,如果是自动缩放总归会有点变形的问题。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 解决DedeCMS使用中缩略图变形的问题(改配置文件或自定义尺寸缩略图)
本文地址: https://pptw.com/jishu/665982.html
WordPress升级至5.6版本且新增twentytwentyone单栏主题 网页不居中解决方法

游客 回复需填写必要信息