如何在上传时轻松调整大小和重命名图像? (PHP)

时间:2015-03-24 14:31:21

标签: php image upload resize rename

我将使用哪些代码:

  1. 将所有上传的图像调整为600px宽度,同时保持高度的宽高比
  2. 将上传的文件重命名为当前时间戳
  3. 以及我如何将其添加到或编辑现有代码(最好不使用类):

    $target_dir2 = "creature_pics/";
    $target_file2 = $target_dir2 . basename($_FILES["u_c2pic"]["name"]);
    $uploadOk2 = 1;
    $imageFileType2 = pathinfo($target_file2,PATHINFO_EXTENSION);
    
    if(isset($_POST["submit"])) {
        $check2 = getimagesize($_FILES["u_c2pic"]["tmp_name"]);
        if($check2 !== false) {
            $uploadOk2 = 1;
        } else {
            $uploadOk2 = 0;
        }
    }
    
    if (file_exists($target_file2)) {
        $uploadOk2 = 0;
    }
    
    if ($_FILES["u_c2pic"]["size"] > 5000000) {
        $uploadOk2 = 0;
    }
    
    if($imageFileType2 != "jpg" && $imageFileType2 != "png" && $imageFileType2 != "jpeg"
    && $imageFileType2 != "gif" ) {
        $uploadOk2 = 0;
    }
    
    if ($uploadOk2 == 0) {
        $ercode2 = "Sorry, your file was not uploaded.";
    } else {
        if (move_uploaded_file($_FILES["u_c2pic"]["tmp_name"], $target_file2)) {
        } else {
            $ercode2 = "Sorry, there was an error uploading your file.";
        }
    }
    

    我是php编码新手,希望最简单的解决方案成为可能。

1 个答案:

答案 0 :(得分:0)

如果您可以在服务器上使用Imagick,则以下代码可以帮助您。

首先进行调整大小的功能。

if(!defined('APPLICATION_PATH')) define('APPLICATION_PATH',  dirname(__FILE__));

function popupImage($width, $height, $code, $name) {
    $file = APPLICATION_PATH.'/creature_pics/'.$name.'.jpg';

    $im = new Imagick($file);

    $imageprops = $im->getImageGeometry();
    $r_width = $imageprops['width'];
    $r_height = $imageprops['height'];
    if($width > $height){
        $newHeight = $height;
        $newWidth = ($width / $r_height) * $r_width;
    }else{
        $newWidth = $width;
        $newHeight = ($height / $r_width) * $r_height;
    }
    $im->resizeImage($newWidth,$newHeight, imagick::FILTER_LANCZOS, 0.9, true);
    $im->cropImage ($width,$height,0,0);    
    $im->writeImage(APPLICATION_PATH.'/creature_pics/'.$code.'.jpg');
    $im->destroy();

    $newFile = APPLICATION_PATH.'/creature_pics/'.$code.'.jpg';
}

然后在你的代码中添加

if (move_uploaded_file($_FILES["u_c2pic"]["tmp_name"], $target_file2)) {
    //This is the new line calling the function
    $timestamp = microtime(true);
    $newFile = popupImage(600,1200,$timestamp,$_FILES["u_c2pic"]["tmp_name"]);
} else {
    $ercode2 = "Sorry, there was an error uploading your file.";
}

那应该在/creature_pics/中创建一个新文件,其名称类似于142023023.9777.jpg,这是作为代码传递给函数的时间戳。

修改

错过了timestamp元素,现在将其添加到