0

我有一个 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>";      
        }
    }


}
4

1 回答 1

2

PNG是无损压缩。当您将“质量”设置为 6 时,您实际上只是在使用平庸的压缩方法,可能会占用更多空间。使用 9 进行最高压缩(以稍微多一点的 CPU 使用为代价,除非您正在执行批处理,否则几乎不会注意到)。

您还可以查看Yahoo! 的图像压缩,以获得更多无损优化。

此外,您真的不应该允许用户指定文件名,即使是部分指定。如果有人上传,你不会太高兴remote_control_script.php。永远不要相信用户上传的内容。

于 2012-12-31T03:10:06.270 回答