時間:2020-11-04來源:www.farandoo.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以上版本的數據還原不正?,F象,介紹了修改的方法,需要的朋友可以參考下...
2020-11-04