在上传过程中调整图像的宽度和高度

时间:2019-08-27 22:17:26

标签: php

我有一个上传脚本,可以将.png文件重命名并上传到我的网站目录。我希望脚本在上传过程中能够将图像缩小到256x256像素。

我在这里四处张望,无法弄清楚如何将其包含在已有的代码中。

29

到目前为止,它仅重命名文件而没有调整大小。

1 个答案:

答案 0 :(得分:1)

我还没有测试过这段代码,很可能会成功!

想法:

$new_width = 256;
$new_height = 256;

$source = $_FILES['fileToUpload']['tmp_name'];
$image = imagecreatefrompng($source);
$layer = imagecreatetruecolor($new_width, $new_height);

imagecopyresampled($layer, $image, 0, 0, 0 ,0, $new_width, $new_height, imagesx($image), imagesy($image));

imagepng($image,'./images/file-name.png', 9); // Here specify the file name.
imagedestroy($image);

完整代码:

<?php
    $z = $_POST['z'];
    $x = $_POST['x'];
    $y = $_POST['y'];
    $target_dir = "/DIRECTORY/$z-$x-$y.png";
    $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
    $uploadOk = 1;
    $imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
    // Check if image file is a actual image or fake image
     if(isset($_POST["submit"])) {
        $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
        if ($check !== false) {
            echo "File is an image - " . $check["mime"] . ".";
            $uploadOk = 1;
        } else {
            echo "File is not an image.";
            $uploadOk = 0;
        }
    }
    // Check if file already exists
    if (file_exists($target_file)) {
        echo "Sorry, file already exists.";
        $uploadOk = 0;
    }
    // Check file size
    if ($_FILES["fileToUpload"]["size"] > 500000) {
        echo "Sorry, your file is too large.";
        $uploadOk = 0;
    }
    // Allow certain file formats
    if($imageFileType != "png") {
        echo "Sorry, only PNG files are allowed.";
        $uploadOk = 0;
    }
    // Check if $uploadOk is set to 0 by an error
    if ($uploadOk == 0) {
        echo "Sorry, your file was not uploaded.";
        // if everything is ok, rename then try to upload file
    } else { 

        $new_width = 256;
        $new_height = 256;

        $source = $_FILES['fileToUpload']['tmp_name'];
        $image = imagecreatefrompng($source);
        $layer = imagecreatetruecolor($new_width, $new_height);

        imagecopyresampled($layer, $image, 0, 0, 0 ,0, $new_width, $new_height, imagesx($image), imagesy($image));

        imagepng($image, $target_dir, 9); // Here specify the file name.
        imagedestroy($image);
        echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
        echo "<a href=\"mywebsite\">To The Drawbox!</a>";

    }
?>