Справочники, инструменты, документация

PHP: Загрузка изображения и изменение размера

Иногда вам нужно загрузить и изменить размер файлов изображений с помощью PHP, и здесь вы найдете простейший фрагмент кода PHP, который позаботится о ваших загруженных файлах изображений.

Первое, что вам нужно сделать, это создать страницу HTML-формы, где поле ввода файла должно быть включено в тег FORM. Например:

<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="image_file" />
<input type="submit" value="Send Image" />
</form>

Следующее, что вам нужно сделать, это создать страницу PHP с приведенным ниже фрагментом кода. Максимальный размер изображения по умолчанию составляет 500, который вы можете изменить в соответствии с вашими потребностями, а также папку назначения. Просто убедитесь, что путь правильный и доступен для записи.

if (isset($_FILES['image_file']))
{
    $max_size = 500; //max image size in Pixels
    $destination_folder = '/root/path/to/image/files';

    $image_name = $_FILES['image_file']['name']; //file name
    $image_size = $_FILES['image_file']['size']; //file size
    $image_temp = $_FILES['image_file']['tmp_name']; //file temp
    $image_type = $_FILES['image_file']['type']; //file type


    switch(strtolower($image_type)) // determine uploaded image type 
        {
            //Create new image from file
            case 'image/png': 
                $image_resource = imagecreatefrompng($image_temp);
                break;
            case 'image/gif':
                $image_resource = imagecreatefromgif($image_temp);
                break; 
            case 'image/jpeg': case 'image/pjpeg':
                $image_resource = imagecreatefromjpeg($image_temp);
                break;
            default:
                $image_resource = false;
        }

    if($image_resource){
        // Copy and resize part of an image with resampling
        list($img_width, $img_height) = getimagesize($image_temp);

     // Construct a proportional size of new image
        $image_scale = min($max_size / $img_width, $max_size / $img_height); 
        $new_image_width = ceil($image_scale * $img_width);
        $new_image_height = ceil($image_scale * $img_height);
        $new_canvas = imagecreatetruecolor($new_image_width , $new_image_height);

     // resize image with new height and width
        if(imagecopyresampled($new_canvas, $image_resource ,0, 0, 0, 0, $new_image_width, $new_image_height, $img_width, $img_height))
        {

            if (!is_dir($destination_folder)){ //create dir if it doesn't exist
                echo (mkdir($destination_folder))?'New folder Created':'Could create new folder';
            }

            // Save as jpeg image file
            switch(strtolower($image_type))
                {
                    case 'image/png':
                        imagepng($new_canvas, $destination_folder.'/'.$image_name);
                        break;
                    case 'image/gif':
                        imagegif($new_canvas, $destination_folder.'/'.$image_name);
                        break; 
                    case 'image/jpeg': case 'image/pjpeg':
                        imagejpeg($new_canvas, $destination_folder.'/'.$image_name, 80);
                        break;
                }
        }
    }
}