0

サーバースペースを節約できるように、アップロードされた画像を半分の品質に変換するために使用している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 に答える