程序默认生成JPG格式缩略图质量不太好,通常比较模糊,尤其是再添加水印的话,感觉图像显示效果更差。
这跟图片处理函数有关,默认生成JPG图片质量是75(也有说60,65),我们可通过改变函数参数提高图片显示效果

以ECShop2.7.3为例(其他版本类同),通常需要两步操作
首先,最好让你的原始图片与后台设置的商品图片比例保持一致且原始图片质量较好
其次,如果你需要水印的话,最好是提前处理好而不是让网站程序给图片加水印20131030091059_01
这里的缩略图100:100比例为1:1;商品图片230:230,比例为1:1
所以保证你的原始图片比例也为1:1最好
20131030091059_02

一、改图片处理函数

打开includes/cls_image.php文件,在大约260行下,将
代码:

/* 生成文件 */
if (function_exists('imagejpeg'))
{
$filename .= '.jpg';
imagejpeg($img_thumb, $dir . $filename);
}
elseif (function_exists('imagegif'))
{

修改为:

/* 生成文件 */
if (function_exists('imagejpeg'))
{
$filename .= '.jpg';
imagejpeg($img_thumb, $dir . $filename,90); //90这个值越高图片质量越好最高为100。(注意前面有个英文“,”号)
}
elseif (function_exists('imagegif'))
{

另外两个GIF,PNG也可以改,不过GIF本身质量就不高,改不改看你需要吧

接着处理加水印的,(不加水印不用改啊)大约412行:
代码:

case 2:
imagejpeg($source_handle, $target);
break;

case 'image/x-png':
case 'image/png':

修改为:

case 2:
imagejpeg($source_handle, $target,90); //90这个值越高图片质量越好最高为100。(注意前面有个英文“,”号)
break;

case 'image/x-png':
case 'image/png':

另外两个GIF,PNG也可以改,改不改看你的需要吧

二、后台批处理图片

20131030091100_03

三、相关说明

1。图片的相关说明

图片格式有很多种,常见的有GIF、JPG(JPEGP)、PNG、BMP,
其图像显示效果为:BMP > PNG > JPG > GIF

选择商品图片的时候,尽量找质量好的图片并进行前期剪裁处理及添加加水印(水印最好是上传前处理好,这样用着也方便。水印处理好了,就把后台添加水印的开关给关了就OK了,提前添加水印的好处就在于防止图片二次处理显示效果变得更差)

2。函数的相关说明

我试过,质量的确有改善,看到有朋友说没效果,我想可能是你的函数GD版本问题
我注意的看了下这个图片处理的php文件,在大约704行左右,有下面语句:
代码:

if (function_exists('imagecreatetruecolor'))
{
$version = 2;
}
elseif (function_exists('imagecreate'))
{
$version = 1;
}

这个循环语句的意思是:

如果:GD版本为1的话,就用imagecreate函数处理缩略
如果:GD版本为2的话,就用imagecreatruecolor函数处理缩略

下面是关于函数的说明,懂php的可以去研究一下
http://baike.baidu.com/view/4393433.htm
http://php.net/manual/en/function.imagecreatetruecolor.php

imagecreatetruecolor
(PHP 4 >= 4.0.6, PHP 5)
imagecreatetruecolor — Create a new true color image
Note: This function requires GD 2.0.1 or later (2.0.28 or later is recommended).

在修改了代码,批处理图片后还是看不到效果的朋友可以自己在后台看一下你的GD版本

我的GD库版本:GD2(GD Version bundled (2.0.34 compatible)
我的PHP版本:5.2.13
20131030091100_04

这个版本GD库文件对:JPEG,GIF,PNG图片都支持

如果证实是因为1.0的原因话,那就没有办法了,因为imagecreatruecolor函数必须要在GD 2.0.1 或更高版本才能执行,按上面所说,得满足:PHP 4 >= 4.0.6, PHP 5 否则叫空间商升级GD库吧!

还有其他办法就是用原图代替,研究过再发吧,嘿嘿,待续……

暂无评论