上传PHP之前调整图像大小

上传PHP之前调整图像大小,php,image,resize,gd,Php,Image,Resize,Gd,我不知道如何在PHP中调整图像大小,我的代码是: for ($index = 1; $index <= 2; $index++) { if (!empty($_FILES["pic$index"]["name"])) { $ext = substr($_FILES["pic$index"]["name"], strrpos($_FILES["pic$index"]["name"], '.') + 1); $dir = "../gallery/$m

我不知道如何在PHP中调整图像大小,我的代码是:

for ($index = 1; $index <= 2; $index++) { 

    if (!empty($_FILES["pic$index"]["name"])) {
        $ext = substr($_FILES["pic$index"]["name"], strrpos($_FILES["pic$index"]["name"], '.') + 1);
        $dir = "../gallery/$mkdir";

        HERE I NEED THE RESIZE OF THE TMP FILE OF IMAGE

        move_uploaded_file($_FILES["pic$index"]["tmp_name"] , "$dir/img-$index.$ext");

    }  

}

for($index=1;$index以下是我用来调整图像大小的代码

在我的例子中,我给函数提供了原始文件名,然后是缩略图文件名

你可以很容易地把它适应你的情况

public static function GenerateThumbnail($im_filename,$th_filename,$max_width,$max_height,$quality = 0.75)
{
// The original image must exist
if(is_file($im_filename))
{
    // Let's create the directory if needed
    $th_path = dirname($th_filename);
    if(!is_dir($th_path))
        mkdir($th_path, 0777, true);
    // If the thumb does not aleady exists
    if(!is_file($th_filename))
    {
        // Get Image size info
        list($width_orig, $height_orig, $image_type) = @getimagesize($im_filename);
        if(!$width_orig)
            return 2;
        switch($image_type)
        {
            case 1: $src_im = @imagecreatefromgif($im_filename);    break;
            case 2: $src_im = @imagecreatefromjpeg($im_filename);   break;
            case 3: $src_im = @imagecreatefrompng($im_filename);    break;
        }
        if(!$src_im)
            return 3;


        $aspect_ratio = (float) $height_orig / $width_orig;

        $thumb_height = $max_height;
        $thumb_width = round($thumb_height / $aspect_ratio);
        if($thumb_width > $max_width)
        {
            $thumb_width    = $max_width;
            $thumb_height   = round($thumb_width * $aspect_ratio);
        }

        $width = $thumb_width;
        $height = $thumb_height;

        $dst_img = @imagecreatetruecolor($width, $height);
        if(!$dst_img)
            return 4;
        $success = @imagecopyresampled($dst_img,$src_im,0,0,0,0,$width,$height,$width_orig,$height_orig);
        if(!$success)
            return 4;
        switch ($image_type) 
        {
            case 1: $success = @imagegif($dst_img,$th_filename); break;
            case 2: $success = @imagejpeg($dst_img,$th_filename,intval($quality*100));  break;
            case 3: $success = @imagepng($dst_img,$th_filename,intval($quality*9)); break;
        }
        if(!$success)
            return 4;
    }
    return 0;
}
return 1;
}
返回码只是用来区分不同类型的错误

通过回顾这些代码,我不喜欢“魔术数字”这个把戏。我必须改变它(例如通过例外情况)

使用move_uploaded_文件将其移动(推荐),然后您可以调整其大小并将其发送到最终目的地。您甚至可能不需要“.tmp”,您可以使用

    // Move it
    if(move_uploaded_file($_FILES["pic$index"]["tmp_name"] , "$dir/img-$index.$ext"))
    // Resize it
      GenerateThumbnail("$dir/img-$index.$ext","$dir/img-$index.$ext",600,800); 

请记住,您正在处理的图片已上载到服务器上。实际上,在将图片存储到“安全位置”之前,您需要调整图片大小


$\u文件[“pic$index”][“tmp\u名称”]
可能是/tmp/somepicturesname

请注意,在上载图像之前,您无法调整图像大小-它需要上载,以便php可以调整其大小。您确定吗?因此,我必须上载图像并调整其大小,然后再次上载?嘿,路易斯,我可以问一下……为什么不允许上载完整图像大小,并在页面呈现时调整图像大小?嘿,b因为600*600图像的大小将大于200*200,例如..
move_uploaded_file()
不要上传任何东西。上传后,只需将文件从同一服务器上的一个目录移动到另一个目录。这个th_文件名和im_文件名是什么?此外,我可以删除“/”的部分吗?如果需要,让我们创建目录..”?。它是图像文件的名称和缩略图文件的名称。“获取该图像,制作缩略图并保存在那里”。如果确定该部分已存在,则可以删除目录中的该部分。是否确定该功能正常?您不能写入:if(!$src_im)return 3;例如。如果您说我信任您,则可以。:-)但是我真的不懂它的功能。。返回数字(0,1,2,3,4)-为什么?在我的代码中我在哪里混合了它?@Luis:我修改了这个函数来测试move\u上传的\u文件的返回值
    // Move it
    if(move_uploaded_file($_FILES["pic$index"]["tmp_name"] , "$dir/img-$index.$ext"))
    // Resize it
      GenerateThumbnail("$dir/img-$index.$ext","$dir/img-$index.$ext",600,800);