Изменить размер изображения при загрузке php - PullRequest
0 голосов
/ 06 января 2011

У меня есть 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 ..

Ответы [ 4 ]

1 голос
/ 06 января 2011

вы можете использовать 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 = thumbnail ($ uploadedFile, 300);imageToFile ($ image, $ folder);// если вы хотите сохранить миниатюру

1 голос
/ 06 января 2011

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

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

1 голос
/ 06 января 2011

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

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

0 голосов
/ 06 января 2011

См. этот ответ , мне нравится использовать imagemagick

...