2015-09-09 11 views
1

Я создаю сайт, на котором администратор должен иметь возможность загружать изображения. Если изображение больше 2 МБ, оно не будет выполнено из-за ограничения. Но даже если бы не было ограничений, все равно было бы лучше изменить размер изображения из-за времени загрузки для посетителей.PHP изменить размер перед загрузкой

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

То, что я сейчас следующее:

if (!empty($_FILES)) 
{ 
    $upload_dir = 'photos'; 
    $tempFile = $_FILES['file']['tmp_name']; 

    $targetPath = dirname(__FILE__) . DIRECTORY_SEPARATOR . $upload_dir . DIRECTORY_SEPARATOR; 
    $mainFile = $targetPath . time() . '-' . $_FILES['file']['name']; 

    list($w, $h) = getimagesize($tempFile); 
    if ($w > 800) 
    { 
     $ratio = 800/$w; 
     $newHeight = $ratio * $h; 

     $tempFile = imagescale($tempFile, 800); 
    } 

    move_uploaded_file($tempFile, $mainFile); 
} 

, но это ничего не делать.

Я использую dropzone с этим скриптом в качестве цели для ввода изображения.

Может кто-нибудь указать мне в правильном направлении? Или PHP уже пытался загрузить изображение, когда оно находится в $_FILES? Если это так, я не знаю, как его решить. Затем он должен быть изменен до dropzone вызывает этот скрипт.

ответ

0

Я рекомендую использовать WideImage. Затем вы можете использовать resize() следующим образом:

WideImage::load('big.png')->resize(50, 30)->saveToFile('small.jpg'); 
Смежные вопросы