时间:2020-11-04来源:www.pcxitongcheng.com作者:电脑系统城
解决dedecms(5.6/5.7)缩略图缩放变形问题方法,我们知道,dedecms缩略图是自动提取,相当于原图的等比例缩放了,比如后台设置缩略图的尺码为:120*90即为3:2的图片,但是假如内容里的大图尺码为300*300即1:1,这样生成出来的图片就会变形,直接后台设置的缩略图大小不起作用啊,这样严重影响网站美观,本文介绍通过修改dedecms生成缩略源码方法解决定问题。
打开include/image.func.php文件,该文件在dedecms5.6/5.7中所在的目录不一样,5.6中文件在/include/下,5.7中文件在/include/helpers/
如果你使用的是dedecms5.7,打开目录/include/helpers/找到image.helper.php文件。
如果你使用的是dedecms5.6,打开目录/include/找到image.func.php文件。
5.6版image.func.php修改方法(直接替换原来方法)
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
//[2020-11-04]:解决缩略图缩放变形问题(宽度、高度为后台设置宽高) 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; } |
5.7版image.helper.php修改方法
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
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; } } |
到此这篇关于解决dedecms(5.6/5.7)缩略图缩放变形问题方法的文章就介绍到这了
2020-11-07
CSS3实现莲花绽放的动画效果2020-11-05
dedecms系统安全设置 防止入侵,挂马的基本安全操作方法2020-11-04
dedecms织梦php7+删除不了后台栏目的解决方法dedecms php7以上版本备份数据还原不出来正常数据的解决方法,主要是针对php7以上版本的数据还原不正常现象,介绍了修改的方法,需要的朋友可以参考下...
2020-11-04