交流群:462197261站长百科站长论坛热门标签收藏本站北冥有鱼 互联网前沿资源第一站 助力全行业互联网+
点击这里给我发消息
  • 当前位置:
  • 织梦dedecms系统自动缩略图压缩率

    这次刚好在做一个网站的优化,该网站采用的是织梦dedecms系统5.7,它的文章系统中有一个自动把文章中的第一个图片生成缩略图的功能。这个功能很有用,在首页生成图文集的时候会派到用处。

     

    当图片是jpeg格式的时候,它所生成的缩略图文件总是过于大,因为它采用了100%质量的,但是这里其实是不需要这么高的质量的,首先这个是缩略图,缩略图是原图大大缩小后的图片,通常只有200像素乘以150像素的大小,而原图常常是四倍的高和宽。当图片缩小的这么小的时候,图片的细节已经不再重要,其实也看不清,要的是大概的样子。

    所以我所需要的图像质量在50%,就足够了。

     

    比如原图是995 pixels X 557 pixels,格式 jpeg,文件大小为127KB。

     

    原来的缩略图是 200 pixels X 150 pixels, 文件格式jpeg, 文件大小为 31KB。

     

     

    在我对缩略图函数进行修改参数后,新的缩略图的像素不变,文件格式不变,文件大小为 6KB

     

    new-thumb.jpg就上面两个缩略图而言,视觉上的差别是微乎其微的,但是文件的大小则是大大的不同,一般织梦系统的首页用到的图文集会有五六张缩略图,或者更多的缩略图作为图片来展示文章,这时缩略图的文件大小会大大的影响到页面的显示速度,也会影响用户的体验。

     

    这个缩略图的压缩率,或者说缩略图的图片质量参数,在DeDeCMS的后台是没有地方设置的,我搜索了很多最后才找到正确的函数及参数调整的地方。织梦系统的各个版本的图片缩略图的函数文件名字不同,所在的目录位置也不同,这里只以织梦系统5.7为修改对象。

     

    要修改的文件目录在 \include\helpers\image.helper.php

     

    打开这个文件,在92行,找到

     

    imagejpeg($ni,$toFile,85);

    修改为

     

     

    imagejpeg($ni,$toFile,50);

    找到318行,找到

     

     

    imagejpeg($new_img, $toFile,100);

    修改为

     

     

    imagejpeg($new_img, $toFile,50);

    保存,覆盖原来的文件,就可以了。

     

    以上修改,缩略图的质量为50%。

     


    广而告之:
    热门推荐:
    JS判断日期格式是否合法的简单实例

    类似于PHP中的Checkdate。 //函数名:CheckDateTime //功能介绍:检查是否为日期时间 function CheckDateTime(str){ var reg = /^(\d+)-(\d{1,2})-(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/; var r = str.match(reg); if(r==null)return false; r[2]=r[2]-1; var d= new Dat···

    跨浏览器通用、可重用的选项卡tab切换js代码

    由于近来学了点js,于是我装逼道。。。不太难吧。。。就切一下display属性?同学无视我。。说要搞个通用的。。。什么还要跟ajax交互。。???我愣是没有听懂。。。到底要搞什么。。。权当作练手,我自己胡弄了一个。   需求:同学口中的通用我不知道神马意思。。。那···

    MySQL快速复制数据库数据表的方法

    某些时候,例如为了搭建一个测试环境,或者克隆一个网站,需要复制一个已存在的mysql数据库。使用以下方法,可以非常简单地实现。 假设已经存在的数据库名字叫db1,想要复制一份,命名为newdb。步骤如下: 1. 首先创建新的数据库newdb #mysql -u root -ppassword mysql>CR···

    网站上flv/MP4等格式的视频文件播放不出来和MIME类型有关系

    在做一个网站时,发现视频文件,比如flv,MP4格式在本地可以正常的播放,但是传到了开发机器上,就不行了。播放器的文件地址是对的,就是一直没有反应。 经过长时间的实验,发现问题在与iis的设置问题。iis默认不让播放视频文件,解决办法如下: 打开服务器上的IIS管理···

    asp.net调用系统设置字体文本框的方法

    本文实例展示了asp.net调用系统设置字体文本框的方法,是进行web开发中很实用的技巧。具体实现步骤如下: 一、调用系统字体文本框 首先在bin文件夹右击-->添加引用-->.net标签里选择:System.Windows.Forms-->确定 然后在cs文件里引入: using System.Windows.Forms···

    模仿OSO的论坛(四)

    reply.php(用来回复主题) <HTML><HEAD><TITLE>疑难问题</TITLE> <LINK href="mypic/style.css" rel=STYLESHEET type=text/css></HEAD> <?php if (!$cook_user) {echo "<script language='javascript'>"···

    基于SQL中SET与SELECT赋值的区别详解

    最近的项目写的SQL比较多,经常会用到对变量赋值,而我使用SET和SELECT都会达到效果。那就有些迷惑,这两者有什么区别呢?什么时候哪该哪个呢?经过网上的查询,及个人练习,总结两者有以下几点主要区别:假定有设定变量:复制代码 代码如下:DECLARE @VAR1 VARCHAR(1) DE···

    javascript函数的四种调用模式

    1、介绍 先介绍一下函数的调用模式有哪四种:  函数调用模式,  方法调用模式,  构造函数调用模式,  上下文调用模式; 在这里对于函数的调用模式,主要介绍每种调用模式的this的指向和返回值。 2、代码分析 ①、函数调用模式 下面的调用模式就是大家最熟悉的函数调用模···

    原生JS实现平滑回到顶部组件

    返回顶部组件是一种极其常见的网页功能,需求简单:页面滚动一定距离后,显示返回顶部的按钮,点击该按钮可以将滚动条滚回至页面开始的位置。 实现思路也很容易,只要改变document.documentElement.scrollTop或document.body.scrollTop的值即可。 本文抛弃所有加速减速的酷炫效···

    JavaScript数组常用方法

    判断某个对象是否是数组: instanceof、Array.isArray() 对于一个网页或者一个全局作用域可以使用instanceof操作符。 if(value instanceof Array){  //判断value是否是数组     } instanceof操作符它假设只有一个全局执行环境,如果网页包含多个框架则使用···