2012-04-12 1 views
1

У меня есть сценарий;Как изменить размер загруженного изображения с помощью php

 $fileName = $_FILES['userfile']['name']; 
     $tmpName = $_FILES['userfile']['tmp_name']; 
     $fileSize = $_FILES['userfile']['size']; 
     $fileType = $_FILES['userfile']['type']; 

     // get the file extension first 
     $ext = substr(strrchr($fileName, "."), 1); 

     // make the random file name 
     $randName = md5(rand() * time()); 

     // and now we have the unique file name for the upload file 
     $filePath = $imagesDir . $randName . '.' . $ext; 

     $result = move_uploaded_file($tmpName, $filePath); 
     if (!$result) { 
      echo "Error uploading file"; 
     exit; 
    } 

if(!get_magic_quotes_gpc()) { 

     $fileName = addslashes($fileName); 
     $filePath = addslashes($filePath); 

    } 

, который я использую для загрузки изображений, но я хотел бы добавить скрипт, чтобы изменить размер изображения до определенного размера, прежде чем он загружен. Как это сделать???

+0

Это сделает это за вас легко .... http://phpthumb.sourceforge.net/ – Baba

+1

Я бы убедиться, что файл имя уникально, хотя шанс смехотворно низкий, но не невозможно – gosukiwi

+0

@Baba thanx для этого, но это слишком сложно! лол! Разве нет более простого метода ??? –

ответ

2

EDIT: Я обновил это включают в себя элементы вашего скрипта. Я начинаю с того момента, когда вы получаете свое имя файла.

Вот очень быстрый, простой скрипт, чтобы сделать это:

$result = move_uploaded_file($tmpName, $filePath); 
$orig_image = imagecreatefromjpeg($filePath); 
$image_info = getimagesize($filePath); 
$width_orig = $image_info[0]; // current width as found in image file 
$height_orig = $image_info[1]; // current height as found in image file 
$width = 1024; // new image width 
$height = 768; // new image height 
$destination_image = imagecreatetruecolor($width, $height); 
imagecopyresampled($destination_image, $orig_image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig); 
// This will just copy the new image over the original at the same filePath. 
imagejpeg($destination_image, $filePath, 100); 
+0

выглядит хорошо @davidethell, но как я могу слить это с помощью мой сценарий выше ??? Было бы здорово, если бы это было возможно! –

+1

@JaySmoke, я обновил этот пример, включив переменную $ filePath. – davidethell

+0

отлично, но есть ошибка со сценарием. где $ img_source получает свои данные от ??? –

0

Ну, вы не можете изменить его размер до его загрузки, но вы можете использовать GD Library, чтобы изменить его размер после того, как он находится на сервере. Проверьте GD and Image Functions listing на все связанные функции для работы с изображениями.

Существует также this tutorial, который покажет вам пользовательский класс для выполнения изменения размера, но если вы не нуждаетесь в целом думаю, что вы можете сосредоточиться на функции изменения размера, чтобы увидеть, как это делается