Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Графика > Скрипт по уменьшению изображения


Автор: web_VIP 8.9.2007, 10:54
Есть форма:
<form method="POST" action ="<?php echo($_SERVER['PHP_SELF'])?>">
<input type="file"   name="foto" accept="image/*">
<input type='submit' name='submited'   value="Отправить">
</form>
А дальше идет скрипт, который обрабатывает изображение:
1. Проверяет что у данного изображения разрешение "JPG", если нет то ошибка.
2. Проверяем разрешение, если больше 800*600 то уменьшаем.
3. Записываем измененное фото в папку /foto/
4. Выводим изображение, чуть ниже его разрешение, то есть 800*600,и если оно было меньше, то выводим то что есть, чуть ниже дату занесения фото в папку, и его вес.

Автор: WolfON 8.9.2007, 12:18
покурите gd или imagemagik

Автор: Vaulter 8.9.2007, 12:49
покурите любой скрипт который это делает
 smile  smile 

Автор: ewolf 9.9.2007, 17:46
http://www.google.com/search?client=opera&rls=ru&q=php+image+thumbnail&sourceid=opera&ie=utf-8&oe=utf-8 все об этом знает. Уже первая ссылка дает ответ на ваш вопрос.

Автор: Date 10.9.2007, 08:05
Форма:


Код

<form method="POST" action ="<?php echo($_SERVER['PHP_SELF'])?>">
<input type="file"   name="myfile" accept="image/*">
<input type='submit' name='submited'   value="Отправить">
</form>



сначало загрузка изображения:



Код

  if(isset($_FILES["myfile"][$i]))
   {
        if (!ereg("image", $_FILES["myfile"]["type"][$i])){
         echo "<b>Файл не является изображением!!! <b>";
         error_add_log($ip_client, 'Файл не является изображением!!! Пользователь('.$autor.')', $link);
         exit();
         }
         else 
        $myfile = $_FILES["myfile"]["tmp_name"][$i];
        $myfile_name = $_FILES["myfile"]["name"][$i];
        $myfile_size = $_FILES["myfile"]["size"][$i];
        $myfile_type = $_FILES["myfile"]["type"][$i];
        $error_flag = $_FILES["myfile"]["error"][$i];
        // Если ошибок не было
        if($error_flag == 0)
        {
            
            // Получаем содержимое файла
            $fp = fopen($myfile,"r");
            $content = fread($fp, filesize($myfile));
            fclose($fp);
    $file='./foto/'.$myfile_name;
            move_uploaded_file ($myfile, $file); 
            
        }


Функция уменьшения JPEG

Код

function resize_jpeg($un_file, $after_resize, $width){    
//chmod ($un_file, 0777);
 
$SOURCE=$un_file;  // исходный файл
$TARGET=$after_resize;     // имя файла для "превьюшки"
$NEWX=100;                 // ширина "превьюшки"
$NEWY=100;                // высота "превьюшки"

  $size = getimagesize($SOURCE);
  if ($size === false) die ('Bad image file!');

  
  $source = imagecreatefromjpeg($SOURCE)
    or die('Cannot load original JPEG');
                // вычисление пропорций 
                if ($size[0]>$size[1]){
                $ratio = $size[0]/$width;
                } else {
                $ratio = $size[1]/$width;
                }
                $X = round($size[0]/$ratio); 
                $Y = round($size[1]/$ratio);    
  // Создаем новое изображение
  $target = imagecreatetruecolor($X, $Y);
  
  // Копируем существующее изображение в новое с изменением размера:
  imagecopyresampled(
    $target,  // Идентификатор нового изображения
    $source,  // Идентификатор исходного изображения
    0,0,      // Координаты (x,y) верхнего левого угла
              // в новом изображении
    0,0,      // Координаты (x,y) верхнего левого угла копируемого
              // блока существующего изображения
    $X,     // Новая ширина копируемого блока
    $Y,     // Новая высота копируемого блока
    $size[0], // Ширина исходного копируемого блока
    $size[1]  // Высота исходного копируемого блока
    );
  imagejpeg($target, $TARGET, 100);
  return $TARGET;
  // Как всегда, не забываем:
  imagedestroy($target);
  imagedestroy($source);
  
  }


теперь проверяем размер если больше то уменьшаем:

Код

$size = getimagesize($file);

  if  ($size[0]<800) || ($size[0]<600)){
        if (($myfile_type=='image/jpeg') or ($myfile_type=='image/pjpeg')){
        $medium= resize_jpeg($file, $file, 600);
        } else {
        print "image is not JPG";}
 }


и вывод самого изображения :

Код

$size = getimagesize($file);
print $size[0].'*'.$size[1].'<br>';
print '<img border=0 src=$file>';


вроде все должно работать...

Автор: web_VIP 10.9.2007, 18:31
Date Спосибо!
А GD библиотеку обязательсно ставить для этого скрипта?

Автор: ewolf 11.9.2007, 00:07
Да, поскольку ее функции позволяют загрузить изображение и работать с ним.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)