PHP创建缩略图功能,使文件尺寸更小,但使文件大小更大?

PHP创建缩略图功能,使文件尺寸更小,但使文件大小更大?,php,file,thumbnails,Php,File,Thumbnails,这是我的创建缩略图代码。 缩略图宽度/高度较小(400)。 但文件大小更大(111KB),旧文件大小更大(95KB) 为什么??如何压缩和缩小文件大小 创建缩略图( 'http://upload.wikimedia.org/wikipedia/en/2/2e/Doraemon_first_appearance.jpg', “./test.jpg”, 400,'w','jpg' ); 函数创建缩略图($source\u file、$destination\u file、$max\u dimensi

这是我的创建缩略图代码。 缩略图宽度/高度较小(400)。 但文件大小更大(111KB),旧文件大小更大(95KB)

为什么??如何压缩和缩小文件大小

创建缩略图( 'http://upload.wikimedia.org/wikipedia/en/2/2e/Doraemon_first_appearance.jpg', “./test.jpg”, 400,'w','jpg' );

函数创建缩略图($source\u file、$destination\u file、$max\u dimension、$one\u dimension=false、$source\u file\u type=false)
{
list($img_width,$img_height)=getimagesize($source_file);//获取原始尺寸
$aspect\u ratio=$img\u width/$img\u height;
//如果任一维度太大。。。
如果($img_宽度>$max_尺寸)| |($img_高度>$max_尺寸))
{
如果($img\u width>$img\u height)//对于宽图像。。。
{
如果($one_维度=='h')
{
$new_width=$img_width*$max_dimension/$img_height;
$new\u height=$max\u维度;
}
其他的
{
$new\u width=$max\u维度;
$new_height=$new_width/$aspect_ratio;
}
}
elseif($img\u width<$img\u height)//对于高图像。。。
{
如果($one_维度=='w')
{
$new\u width=$max\u维度;
$new_height=$img_height*$max_dimension/$img_width;
}
其他的
{
$new\u height=$max\u维度;
$new_width=$new_height*$aspect_ratio;
}
}
elseif($img\u width==$img\u height)//对于方形图像。。。
{
$new\u width=$max\u维度;
$new\u height=$max\u维度;
}
else{echo“读取图像大小时出错。”返回FALSE;}
//确保这些是整数。
$new_width=intval($new_width);
$new_height=intval($new_height);
$thumbnail=imagecreatetruecolor($new_width,$new_height);//在内存中创建新图像。
//下面的块检索源文件。它假定文件扩展名与文件格式匹配。
如果(!$source\u file\u type)$source\u file\u type=get\u file\u ext($source\u file,true);
如果($source_file_type==“gif”){$img_source=imagecreatefromformgif($source_file);}
elseif($source_file_type==“jpg”)| |($source_file_type==“jpeg”)| |($source_file_type==“pjpeg”){$img_source=imagecreatefromjpeg($source_file);}
elseif($source\u file\u type==“bmp”){$img\u source=imagecreatefromwbmp($source\u file);}
elseif($source_file_type==“png”){$img_source=imagecreatefrompng($source_file);}
//在这里,我们重新采样并创建新的jpeg。
imagecopyresampled($thumbnail、$img\u source、0、0、0、$new\u width、$new\u height、$img\u width、$img\u height);
imagejpeg($thumbnail,$destination_文件,100);
//最后,我们销毁内存中的两个图像。
图像销毁($img_源);
图像销毁(缩略图);
}
//如果已经变小了,不要改变尺寸。
否则{
复制($source\u file,$destination\u file);
} 
}

通过调整
imagejpeg
的第三个参数来降低输出图像的质量(当100为最佳质量时,范围从0到100)。例如:

imagejpeg($thumbnail, $destination_file, 80);

更好的方法是使用ImageMagick库和大量其他图像处理


并没有真正回答这个问题。
imagejpeg($thumbnail, $destination_file, 80);