濮阳杆衣贸易有限公司

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

解決織夢(mèng)DedeCms縮略圖不拉伸變形的方法

POST TIME:2020-04-01 18:43

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

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

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

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

看起來(lái)很不美觀,影響了圖片的觀賞性

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

修改如下:

打開(kāi)/includes/image.func.php文件,

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

找到代碼第44行function ImageResize

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


  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. //裁剪圖片成標(biāo)準(zhǔn)縮略圖
  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. }

 



收縮
  • 微信客服
  • 微信二維碼
  • 電話(huà)咨詢(xún)

  • 400-1100-266
克什克腾旗| 三穗县| 威信县| 漳州市| 祁阳县| 都江堰市| 米易县| 广南县| 团风县| 阿拉善盟| 合江县| 高淳县| 郧西县| 福安市| 江陵县| 彭阳县| 张家口市| 屯昌县| 印江| 三明市| 安阳市| 江津市| 三亚市| 蓬溪县| 湘阴县| 台中市| 平果县| 南华县| 湖北省| 确山县| 土默特右旗| 广宁县| 杭州市| 湟源县| 泸水县| 永修县| 榆林市| 麦盖提县| 内乡县| 彝良县| 贡嘎县|