Загрузить изображение, создать его большой палец, затем сохранить - PullRequest
3 голосов
/ 20 июля 2010

Допустим, я загрузил изображение. Я могу получить его временный каталог, затем сохранить его с помощью move_uploaded_file(), но что, если я хочу также создать большой палец и сохранить оба файла в какой-то папке?

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

Ответы [ 4 ]

3 голосов
/ 20 июля 2010

Библиотека GD делает это очень просто.

Вы хотите рассчитать размеры исходного изображения, чтобы сохранить соотношение сторон, тогда это всего лишь случай передискретизации изображения в меньшем размере.Вот хороший урок, который все ясно объясняет: http://www.phptoys.com/e107_plugins/content/content.php?content.46

1 голос
/ 20 июля 2010

Я всегда использую Verot PHP Upload класс и всегда имел успех с ним.Этот PHP-класс действительно прост в реализации и может манипулировать изображением любым удобным для вас способом.Он может сохранить изображение также в указанной папке.

Вы можете загрузить его с здесь

Чтобы просмотреть демонстрации и простую документацию о посещении класса загрузки, посетите http://www.verot.net/php_class_upload_samples.htm?PHPSESSID=5375147e959625e56e0127f3458a6385

Ниже приведен простой пример, который я получил с сайта

//How to use it?
//Create a simple HTML file, with a form such as:

 <form enctype="multipart/form-data" method="post" action="upload.php">
   <input type="file" size="32" name="image_field" value="">
   <input type="submit" name="Submit" value="upload">
 </form>

//Create a file called upload.php:

  $handle = new upload($_FILES['image_field']);
  if ($handle->uploaded) {
      $handle->file_new_name_body   = 'image_resized';
      $handle->image_resize         = true;
      $handle->image_x              = 100;
      $handle->image_ratio_y        = true;
      $handle->process('/home/user/files/');
      if ($handle->processed) {
          echo 'image resized';
          $handle->clean();
      } else {
          echo 'error : ' . $handle->error;
      }
  }

//How to process local files?
//Use the class as following, the rest being the same as above:

  $handle = new upload('/home/user/myfile.jpg');
1 голос
/ 20 июля 2010

вам нужно либо php gd , либо imagemagick . Вот быстрый пример изменения размера с помощью gd (из руководства):

<?php
// File and new size
$filename = 'test.jpg';
$percent = 0.5;

// Content type
header('Content-type: image/jpeg');

// Get new sizes
list($width, $height) = getimagesize($filename);
$newwidth = $width * $percent;
$newheight = $height * $percent;

// Load
$thumb = imagecreatetruecolor($newwidth, $newheight);
$source = imagecreatefromjpeg($filename);

// Resize
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

// Output
imagejpeg($thumb, 'thumbs/thumb1.jpg');
?>
0 голосов
/ 20 июля 2010

Использовать магию изображения. проверить предыдущие сообщения на переполнение стека Генерация миниатюр Imagemagick с помощью php - использование -crop PHP: создание обрезанных миниатюр изображений, проблемы Класс обработки изображений в PHP http://www.imagemagick.org/

define('THUMB_WIDTH', 60);
define('THUMB_HEIGHT', 80);
define('MAGICK_PATH','/usr/local/bin/');

function makeThumbnail($in, $out) {
    $width = THUMB_WIDTH;
    $height = THUMB_HEIGHT;
    list($w,$h) = getimagesize($in);

    $thumbRatio = $width/$height;
    $inRatio = $w/$h;
    $isLandscape = $inRatio > $thumbRatio;

    $size = ($isLandscape ? '1000x'.$height : $width.'x1000');
    $xoff = ($isLandscape ? floor((($inRatio*$height)-$width)/2) : 0);
    $command = MAGICK_PATH."convert $in -resize $size -crop {$width}x{$height}+{$xoff}+0 ".
        "-colorspace RGB -strip -quality 90 $out";

    exec($command);
}
...