Строну уменьшения / изменения размера? - PullRequest
0 голосов
/ 04 августа 2009

Как изменить размер / уменьшить размер загружаемых с помощью сценария загрузки изображений до 350x100, если они больше 350x100?

Мой скрипт:

$allowed_filetypes = array('.png','.PNG');
$filename = $_FILES['strUpload']['name']; 
$ext = substr($filename, strpos($filename,'.'), strlen($filename)-1); 
if(in_array($ext,$allowed_filetypes)) 
{
    list($width, $height, $type, $attr) = getimagesize($_FILES['strUpload']['tmp_name']);
    if ($width > 350 || $height > 100) 
    {
        echo "That file dimensions are not allowed. Only 350x100 is allowed";
        exit();
    } 

    if ($_FILES['strUpload']['size'] > 2097152 )
    {
        echo "ERROR: Large File Size. Only less than 2mb accepted";
        exit();
    }

    $imagename = uniqid('ff') . ".png";
    move_uploaded_file ( $_FILES['strUpload']['tmp_name'], $imagename );

    print ( "<script type=\"text/javascript\">" );
    if(file_exists($imagename) && $_FILES['strUpload']['name'] != '')
    {
        print ( "self.opener.SetImageFile(\"" . $imagename . "\");" );
        echo "\n";
        print ( "self.opener.setInputFile(\"" . $imagename . "\");" );
    }
    echo "\n";
    print ( "window.close();" );
    echo "\n";
    print ( "</script>" );

    $open = new dbconnect();
    $open->callDB("localhost","pema2201_william","lindberg","pema2201_siggen");

    $ip = $_SERVER['REMOTE_ADDR'];
    $dattum = date('Y-m-d H:i:s', time());

    mysql_query("INSERT INTO piclist (ip,pic,datum) VALUES('$ip','$imagename','$dattum')") or die(mysql_error());

} 
else 
{
    echo "WRONG FILE TYPE ONLY PNG ALLOWED"
}

Ответы [ 4 ]

1 голос
/ 04 августа 2009

PHP имеет несколько библиотек обработки изображений. Библиотека GD поставляется с PHP 4.3, поэтому я предлагаю использовать ее. Просто прочитайте документы, чтобы найти то, что вам нужно.

0 голосов
/ 04 августа 2009

Основная идея заключается в создании нового «холста» с желаемыми размерами для изображения.

Возьмите загруженное изображение и скопируйте его на новый холст, задавая исходную ширину x высоту (взять все исходное изображение) и целевую ширину x высоту (использовать весь целевой холст), смещения доступны для смещения изображения немного, если нужно.

Затем, наконец, сохраните его там, куда вам нужно, или вставьте его в поле базы данных (это заменит ваш вызов move_uploaded_file).

0 голосов
/ 04 августа 2009

Посмотрите на этот вопрос, который кто-то задал несколько дней назад.

Это не только объясняет, как это делается, но и как это делается эффективным образом. (ImageMagick следует использовать поверх библиотеки GD)

Надеюсь, это поможет.

0 голосов
/ 04 августа 2009

Use imagecopyresized - хороший пример того, как его использовать, на странице руководства PHP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...