2011-01-06 2 views
0

У меня есть PHP скрипт для загрузки изображений, как показано нижеИзменение размера изображения на загрузки PHP

<?php 
$LibID = $_POST[name]; 
define ("MAX_SIZE","10000"); 
function getExtension($str) { 
     $i = strrpos($str,"."); 
     if (!$i) { return ""; } 
     $l = strlen($str) - $i; 
     $ext = substr($str,$i+1,$l); 
     return $ext; 
} 
$errors=0; 
    $image=$_FILES['image']['name']; 
    if ($image) 
    { 
     $filename = stripslashes($_FILES['image']['name']); 
     $extension = getExtension($filename); 
     $extension = strtolower($extension); 
if (($extension != "jpg") && ($extension != "jpeg")) 
     { 
      echo '<h1>Unknown extension!</h1>'; 
      $errors=1; 
      exit(); 
     } 
     else 
     { 
$size=filesize($_FILES['image']['tmp_name']); 
if ($size > MAX_SIZE*1024) 
{ 
    echo '<h1>You have exceeded the size limit!</h1>'; 
    $errors=1; 
    exit(); 
} 
$image_name=$LibID.'.'.$extension; 
$newname="uimages/".$image_name; 
$copied = copy($_FILES['image']['tmp_name'], $newname); 
if (!$copied) 
{ 
    echo '<h1>image upload unsuccessfull!</h1>'; 
    $errors=1; 
    exit(); 
}}} 
?> 

, который загружает файл изображения в папку «uimages» в корне. Я сделал изменения в html-файле для компактного отображения изображения, указав «max-height» и «max-width». Но я хочу изменить размер файла изображения при загрузке. Файл изображения может иметь максимальную ширину 100 пикселей и максимальную высоту 150 пикселей. Соотношения изображения должны быть ограничены. То есть изображение может быть меньше указанных выше размеров, но оно не должно превышать предел. Как я могу сделать это возможным?

Заранее спасибо :)

blasteralfred ..

+1

Возможный дубликат [Эффективное изменение изображения JPEG в PHP] (http://stackoverflow.com/questions/12661/efficient-jpeg-image-resizing-in-php) –

+0

THE ВОПРОС ЗАКРЫТ. .. обновленный вопрос здесь: http://stackoverflow.com/questions/4615144/rename-image-file-on-upload-php –

+0

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

ответ

0

this answer Посмотреть, мне нравится, что я использую ImageMagick

1

Один не может изменить размер изображения на загрузку; Он должен быть на сервере первым.

Для этого вы можете увидеть Eric's answer с помощью ImageMagick. Если вы используете библиотеку GD, вы можете использовать this.

1

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

http://www.spotlesswebdesign.com/blog.php?id=1

1

вы можете использовать 2 функции для изменения размера изображения после загрузки

<?php 

function thumbnail($inputFileName, $maxSize = 100) { 
    $info = getimagesize($inputFileName); 
    $type = isset($info['type']) ? $info['type'] : $info[2]; 
    if (!(imagetypes() & $type)) { 
     return false; 
    } 

    $width = isset($info['width']) ? $info['width'] : $info[0]; 
    $height = isset($info['height']) ? $info['height'] : $info[1]; 

    // Calculate aspect ratio 
    $wRatio = $maxSize/$width; 
    $hRatio = $maxSize/$height; 

    // Using imagecreatefromstring will automatically detect the file type 
    $sourceImage = imagecreatefromstring(file_get_contents($inputFileName)); 

    // Calculate a proportional width and height no larger than the max size. 
    if (($width <= $maxSize) && ($height <= $maxSize)) { 
     // Input is smaller than thumbnail, do nothing 
     return $sourceImage; 
    } elseif (($wRatio * $height) < $maxSize) { 
     // Image is horizontal 
     $tHeight = ceil($wRatio * $height); 
     $tWidth = $maxSize; 
    } else { 
     // Image is vertical 
     $tWidth = ceil($hRatio * $width); 
     $tHeight = $maxSize; 
    } 

    $thumb = imagecreatetruecolor($tWidth, $tHeight); 

    if ($sourceImage === false) { 
     // Could not load image 
     return false; 
    } 

    // Copy resampled makes a smooth thumbnail 
    imagecopyresampled($thumb, $sourceImage, 0, 0, 0, 0, $tWidth, $tHeight, $width, $height); 
    imagedestroy($sourceImage); 

    return $thumb; 
} 


function imageToFile($im, $fileName, $quality = 80) { 
    if (!$im || file_exists($fileName)) { 
     return false; 
    } 

    $ext = strtolower(substr($fileName, strrpos($fileName, '.'))); 

    switch ($ext) { 
     case '.gif': 
      imagegif($im, $fileName); 
      break; 
     case '.jpg': 
     case '.jpeg': 
      imagejpeg($im, $fileName, $quality); 
      break; 
     case '.png': 
      imagepng($im, $fileName); 
      break; 
     case '.bmp': 
      imagewbmp($im, $fileName); 
      break; 
     default: 
      return false; 
    } 
    return true; 
} 

?> 

делают вызов, как это: $ IMAGE = уменьшенных изображений ($ uploadedFile, 300); imageToFile ($ image, $ folder); // если вы хотите сохранить миниатюру

Смежные вопросы