我有一个PHP脚本,我用来将上传的图像转换为它的一半质量,这样我就可以节省服务器空间,但它不起作用我是PHP的新手所以希望有人能在我出错的地方帮助我。
if(isset($_FILES['t1']['name'])){
$file = rand(0, 10000000).$_FILES['t1']['name'];
if (move_uploaded_file($_FILES['t1']['tmp_name'], $file)) {
if($fp = fopen($file,"rb", 0))
{
$picture = fread($fp,filesize($file));
fclose($fp);
$img = imagecreatefrompng($file);
imagepng($img, $file, 6); //6 quality setting
imagedestroy($img);
$tag1 = '<img src="'.$file.'" alt="" class="default" />';
//unlink($file);
echo "<script>$(document).ready(function() {var write = $('.item:nth-child(1)').html();localStorage.item1Pantry = write;});</script>";
}
}
}
答案 0 :(得分:2)
PNG是无损压缩。当你将“质量”设置为6时,你实际上只是使用平庸的压缩方法,可能会占用更多空间。使用9进行最高压缩(代价是CPU使用率稍高,除非您正在进行批处理,否则几乎不会引起注意)。
您还可以查看Yahoo!'s image compression,了解更多无损优化。
另外,你真的不应该允许用户指定文件名,即使是部分。如果有人上传了remote_control_script.php
,你就不会太高兴了。永远不要相信用户上传的内容。