时间: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)缩略图缩放变形问题方法的文章就介绍到这了
2024-07-07
Nginx+Tomcat部署Angular+javaweb项目的操作2024-07-04
wordpress如何统计浏览量2024-07-04
wordpress如何自动分页wordpress 首页模板修改步骤:登录 wordpress 仪表盘。转至“外观”>“主题编辑器”。找到并备份“index.php”文件。更新首页模板元素,包括标题、内容、侧边栏和页脚。保存更改并预览。...
2024-07-04
通过修改 cascading style sheets (css) 文件,可以有效修改 wordpress 主题框架的排版。步骤包括:识别需要更改的元素及其相应的 css 类或 id。打开 theme 的 css 文件并编辑...
2024-07-04