现在我想压缩图片,比如说640x480 的图片 现在存储的时候是 600k 我想实现压缩成 640x 480 的480k 大小的图片 这个能实现吗? 如果这样压缩图片会不会损坏?具体要怎么做?急求?????
回复讨论(解决方案)
降低图片的像素就可以了,可能存在的问题就是图片的显示效果与原图的效果存在色差,存在疵点。
可以用gd库生成缩略图
<?php//创建一个压缩包$zp = gzopen("1.gz", "wb");//获取待压缩的数据$string = file_get_contents("com.html");//最大化压缩数据$compress_string = gzcompress($string, 9);//将压缩数据写入压缩包gzwrite($zp, $compress_string, strlen($compress_string));gzclose($zp);?>
图片压缩是一样的
?考: http://blog.csdn.net/fdipzone/article/details/9316385
不可以!
把 640x 480 600k 压缩成 640x 480 480k,那么去掉的 120k 必然带走了1/5 的图片数据,导致图片质量下降
除非你的原始图片是位图方式(BMP,TIFF)的,但是
gif 是无损压缩,但只有 256 种颜色(即会丢失色彩信息)
jpeg 是有损压缩,显然有损两字已经很好地说明问题了
png 虽是无损压缩,但若是 256色 的,显然是丢失了色彩信息,而真彩的又等于没压缩
降低quality试试。
我用PHP可以有三种方法:
1.
$im = imagecreatefromjpeg('3.jpg'); imageinterlace($im, true); imagejpeg($im, './3.jpg'); var_dump(imageinterlace($im, true));
这个可以将图片压缩2k(这是我的图片得到的结果)
2.
$image = @imagecreatefromjpeg("9.jpg"); imagejpeg($image,'90.jpg',20); /*压缩等级0-100*/ imagedestroy ($image);
这个可以将图片压缩到90%。 imagejpeg($image,'90.jpg',0); //143k => 7k
当然这个图片就没有原来的清晰度了。所以用20可以压缩图片可以达到我想要的状态,不但能压缩到17k,用肉眼看和原图没有多大差别。
这是图9
3.php 的ImageMagick 扩展,这个没有具体试验能压缩到多少
不可以!
把 640x 480 600k 压缩成 640x 480 480k,那么去掉的 120k 必然带走了1/5 的图片数据,导致图片质量下降
除非你的原始图片是位图方式(BMP,TIFF)的,但是
gif 是无损压缩,但只有 256 种颜色(即会丢失色彩信息)
jpeg 是有损压缩,显然有损两字已经很好地说明问题了
png 虽是无损压缩,但若是 256色 的,显然是丢失了色彩信息,而真彩的又等于没压缩
我用两种方法基本实现了。麻烦斑斑给结个帖。
?考: http://blog.csdn.net/fdipzone/article/details/9316385
谢啦,这刚好是我没有实验的那种方法。
结贴是你自己的事情
不可以!
把 640x 480 600k 压缩成 640x 480 480k,那么去掉的 120k 必然带走了1/5 的图片数据,导致图片质量下降
除非你的原始图片是位图方式(BMP,TIFF)的,但是
gif 是无损压缩,但只有 256 种颜色(即会丢失色彩信息)
jpeg 是有损压缩,显然有损两字已经很好地说明问题了
png 虽是无损压缩,但若是 256色 的,显然是丢失了色彩信息,而真彩的又等于没压缩
我用两种方法基本实现了。麻烦斑斑给结个帖。