簡體   English   中英

PHP-壓縮圖像后的move_uploaded_file

[英]PHP - move_uploaded_file after compressing image

我在php中有一個上傳腳本,該腳本接受一個或多個文件並將它們上傳到我的服務器上。 我現在正嘗試在上傳之前壓縮圖像,以節省時間和服務器空間。

我的壓縮功能和上傳功能都可以單獨工作,但是我無法將兩者結合在一起。

如果我沒有壓縮就上傳,如:

if (move_uploaded_file($temp, "../images/" . $upload)){

它工作正常,但是它嘗試移動壓縮的圖像而不是完整尺寸的圖像,如下所示:

    // compression
    $compressed = compress_image($temp, $upload, 70);
    //

    if (move_uploaded_file($temp, "../images/" . $compressed)){

完整代碼如下:

function getExtension($str) {
    $ext = pathinfo($str, PATHINFO_EXTENSION);
    return $ext;
}

function compress_image($source_url, $destination_url, $quality) {
    $info = getimagesize($source_url);
    if ($info['mime'] == 'image/jpeg'){$image = imagecreatefromjpeg($source_url);}
    else if ($info['mime'] == 'image/gif'){$image = imagecreatefromgif($source_url);}
    else if ($info['mime'] == 'image/png'){$image = imagecreatefrompng($source_url);}
    imagejpeg($image, $destination_url, $quality);
    return $destination_url;
}


foreach ($_FILES["images"]["error"] as $key => $error) {
    if ($error == UPLOAD_ERR_OK) {

        $temp = $_FILES["images"]["tmp_name"][$key];
        $name = $_FILES["images"]["name"][$key];
        $extension = getExtension($name);
        $extension = strtolower($extension);
        $upload = $_POST['name'].'.'.$extension;

        // compression
        $compressed = compress_image($temp, $upload, 70);
        //

        if (move_uploaded_file($temp, "../images/" . $compressed)){
            echo "OK";
        }
        else{
            echo "ERROR";
        }
    }
}

該文件說。

如果filename不是有效的上傳文件,則不會執行任何操作,並且move_uploaded_file()將返回FALSE。

我猜想它只能在原始上傳文件上使用。 為什么不先移動move_upload_file然后進行壓縮。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM