濮阳杆衣贸易有限公司

主頁 > 網(wǎng)站建設 > 建站知識 > 解決織夢DedeCms縮略圖不拉伸變形的方法

解決織夢DedeCms縮略圖不拉伸變形的方法

POST TIME:2020-04-01 18:43

織夢目前幾個最新版本的縮略圖生成方式都是采用縮小或拉伸的方式進行完整顯示,如果使用的圖片和縮略圖所顯示的比例不一致的話,會使得縮略圖拉伸變形。如果不改變織夢目前的縮略圖顯示方式的話,又想縮略圖不拉伸變形顯示,就得制作一個和顯示縮略圖位置大小一致或者圖片比例一致且大于縮略圖的分辨率就會不拉伸變形了。

我們可以通過下面方法修改實現(xiàn),對圖片進行按寬或高進行放縮,超過縮略圖大小的部分再進行裁剪,這樣生成的縮略圖的顯示效果要比原來的要好得多了。同時也可以采取之際制作好分辨率一致的縮略圖進行顯示。

于是重新修改了一下DedeCms v5.6縮略圖生成方法。

默認dedecms5.6默認生成的縮略圖,縮略圖大小設置為:100*100(直接把圖片縮小了)

看起來很不美觀,影響了圖片的觀賞性

DedeCms v5.6縮略圖裁剪優(yōu)化方法

修改如下:

打開/includes/image.func.php文件,

//縮圖片自動生成函數(shù),來源支持bmp、gif、jpg、png
//但生成的小圖只用jpg或png格式

找到代碼第44行function ImageResize

//獲得GD的版本之間的代碼,用如下的代碼覆蓋(大家請注意備份)。


  1. functionImageResize($srcFile,$toW,$toH,$toFile="")
  2. {
  3. global$cfg_photo_type;
  4. if($toFile=="")
  5. {
  6. $toFile=$srcFile;
  7. }
  8. $info="";
  9. $srcInfo=GetImageSize($srcFile,$info);
  10. switch($srcInfo[2])
  11. {
  12. case1:
  13. if(!$cfg_photo_type['gif'])
  14. {
  15. returnfalse;
  16. }
  17. $im=imagecreatefromgif($srcFile);
  18. break;
  19. case2:
  20. if(!$cfg_photo_type['jpeg'])
  21. {
  22. returnfalse;
  23. }
  24. $im=imagecreatefromjpeg($srcFile);
  25. break;
  26. case3:
  27. if(!$cfg_photo_type['png'])
  28. {
  29. returnfalse;
  30. }
  31. $im=imagecreatefrompng($srcFile);
  32. break;
  33. case6:
  34. if(!$cfg_photo_type['bmp'])
  35. {
  36. returnfalse;
  37. }
  38. $im=imagecreatefromwbmp($srcFile);
  39. break;
  40. }
  41. $srcW=ImageSX($im);
  42. $srcH=ImageSY($im);
  43. if($srcW<=$toW&&$srcH<=$toH)
  44. {
  45. returntrue;
  46. }
  47. //縮略生成并裁剪
  48. $newW=$toH*$srcW/$srcH;
  49. $newH=$toW*$srcH/$srcW;
  50. if($newH>=$toH)
  51. {
  52. $ftoW=$toW;
  53. $ftoH=$newH;
  54. }
  55. else
  56. {
  57. $ftoW=$newW;
  58. $ftoH=$toH;
  59. }
  60. if($srcW>$toW||$srcH>$toH)
  61. {
  62. if(function_exists("imagecreatetruecolor"))
  63. {
  64. @$ni=imagecreatetruecolor($ftoW,$ftoH);
  65. if($ni)
  66. {
  67. imagecopyresampled($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
  68. }
  69. else
  70. {
  71. $ni=imagecreate($ftoW,$ftoH);
  72. imagecopyresized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
  73. }
  74. }
  75. else
  76. {
  77. $ni=imagecreate($ftoW,$ftoH);
  78. imagecopyresized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
  79. }
  80. //裁剪圖片成標準縮略圖
  81. $new_imgx=imagecreatetruecolor($toW,$toH);
  82. if($newH>=$toH)
  83. {
  84. imagecopyresampled($new_imgx,$ni,0,0,0,($newH-$toH)/2,$toW,$toH,$toW,$toH);
  85. }
  86. else
  87. {
  88. imagecopyresampled($new_imgx,$ni,0,0,($newW-$toW)/2,0,$toW,$toH,$toW,$toH);
  89. }
  90. switch($srcInfo[2])
  91. {
  92. case1:
  93. imagegif($new_imgx,$toFile);
  94. break;
  95. case2:
  96. imagejpeg($new_imgx,$toFile,85);
  97. break;
  98. case3:
  99. imagepng($new_imgx,$toFile);
  100. break;
  101. case6:
  102. imagebmp($new_imgx,$toFile);
  103. break;
  104. default:
  105. returnfalse;
  106. }
  107. imagedestroy($new_imgx);
  108. imagedestroy($ni);
  109. }
  110. imagedestroy($im);
  111. returntrue;
  112. }

 



收縮
  • 微信客服
  • 微信二維碼
  • 電話咨詢

  • 400-1100-266
阳山县| 陆河县| 新巴尔虎右旗| 高雄县| 富顺县| 故城县| 阿克苏市| 东兴市| 卫辉市| 旅游| 龙里县| 遂平县| 称多县| 怀远县| 红原县| 双江| 苗栗县| 兰西县| 句容市| 莲花县| 邹平县| 内丘县| 彭水| 隆尧县| 山阴县| 鄂伦春自治旗| 达拉特旗| 安泽县| 卢龙县| 汽车| 永德县| 夏津县| 盐山县| 纳雍县| 德保县| 乌审旗| 青川县| 朔州市| 梅河口市| 东明县| 鹤壁市|