热搜:NVER node 开发 php

php 中的图片压缩

2024-08-14 23:05:01
php 中的图片压缩

现在我想压缩图片,比如说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色 的,显然是丢失了色彩信息,而真彩的又等于没压缩


我用两种方法基本实现了。麻烦斑斑给结个帖。