-2

I have an upload script that renames and uploads .png files to directory of my website. I want the script to be able to scale the image down to 256x256 pixels during the upload process.

I was looking around here and I can't figure out how to include it in the code I already have.

<?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 { 
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], 
$target_dir)) {
        echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " 
has been uploaded.";
        echo '<a href="mywebsite">To The Drawbox! 
   </a>';

    } else {
        echo "Sorry, there was an error uploading your file.";
    }
}
?>

So far it only renames the files but does not resize.

RGB K
  • 1
  • 2

1 Answers1

1

I haven't tested this code, most likely it'll work!

idea:

$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);

Full code:

<?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>";

    }
?>
Hossein Zare
  • 532
  • 2
  • 16