ФорумПрограммированиеPHP для идиотов → Изменить размер картинки

Изменить размер картинки

  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 23 марта 2009 г. 9:50

    Вобщес САБЖ, но есть несколько но.

    Я загружаю картинку на сервер,


    //путь загрузки картинки
    $uploaddir = 'img/';
    $uploadfile = $uploaddir.basename($_FILES['myfile']['name']);
    //для миниатюр
    $uploaddir_m = 'img/m_';
    $uploadfile_m = $uploaddir_m.basename($_FILES['myfile']['name']);


    //загружаем картинку
    if (move_uploaded_file($_FILES['myfile']['tmp_name'], $uploadfile)) {


    $src=$uploadfile;
    $dest=$uploadfile_m;
    $width=150;
    $height=150;
    $quality=100;

     if(!file_exists($src)) return 1; // исходный файл не найден
     $size=getimagesize($src);
     if($size===false) return 2; // не удалось получить параметры файла

     // Определяем исходный формат по MIME-информации и выбираем соответствующую imagecreatefrom-функцию.
     $format=strtolower(substr($size['mime'], strpos($size['mime'], '/')+1));
     $icfunc="imagecreatefrom".$format;
     if(!function_exists($icfunc)) return 3; // не существует подходящей функции преобразования

     // Определяем необходимость преобразования размера так чтоб вписывалась высота
     if( $width<$size[0] || $height<$size[1] )
     {
       $ratio=$height/$size[1];
     }
     else
     {
       $ratio=1;
     }


     $src1 = imagecreatefrompng("img/znak.png");
     $size2=getimagesize("img/znak.png");
     $isrc=$icfunc($src);
     $idest=imagecreatetruecolor($size[0]*$ratio,$size[1]*$ratio);


    //собственно создаем  картинку миниатюру
    imagecopyresampled($idest, $isrc, 0, 0, $dx, $dy, $size[0]*$ratio, $size[1]*$ratio,  $size[0], $size[1]);

     $ratio2=($size[0]/$size2[0]);

    //создаем водные знаки
    imagecopyresampled($isrc,$src1, 10, ($size[1]/2)-50, $dx, $dy,$size[0]-20,$size2[1]*$ratio2,($size[0]/$ratio2),$size2[1]);

     imagejpeg($idest,$dest,100);
     imagejpeg($isrc,$src,70);
     chmod($dest,0666);
    }
  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 23 марта 2009 г. 9:55, спустя 5 минут 19 секунд

    Так вот надо загруженную картинку уменьшить.

    Пока писал пост подумал, а можно ли картинку не загружать так
    move_uploaded_file($_FILES['myfile']['tmp_name'], $uploadfile)

    А сразу скопировать ее в более мелкую из временного файла?

    Собственно нечто такое


    $idest=$idest=imagecreatetruecolor($size[0]/2,$size[1]/2);
    $isrc=imagecreatefromjpg($_FILES['myfile']['tmp_name']);
    imagecopyresampled($idest, $isrc, 0, 0, $dx, $dy, $size[0]*$ratio, $size[1]*$ratio, $size[0], $size[1]);
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 23 марта 2009 г. 12:00, спустя 2 часа 5 минут

    Professor, апоминай запоминай запоминай сука!!!

    http://pyha.ru/forum/topic/2109.msg35752#msg35752
    Сапожник без сапог
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz 23 марта 2009 г. 12:09, спустя 8 минут 30 секунд

  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 23 марта 2009 г. 12:24, спустя 14 минут 55 секунд


    Professor, апоминай запоминай запоминай сука!!!

    http://pyha.ru/forum/topic/2109.msg35752#msg35752

    Что такое imagemagick я не знаю. ща вникатьбуду.

    NRG, ну как размер менять я уже разобрался, проблемма в том, что я не хотел удалять файл а размеры изменить.
    Значит только создать клон и удалить оригинал. =(
  • AlexB

    Сообщения: 4306 Репутация: N Группа: в ухо

    Spritz 23 марта 2009 г. 12:43, спустя 19 минут 53 секунды

    imagemagick - руль, GD - в отстой.
    Например, imagemagick позволяет одной командой сказать: "Нука уменьши мне картинку такой-то ширины, а высоту сам посчитай".
    В GD это четыре команды + математические вычисления.
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 23 марта 2009 г. 13:28, спустя 44 минуты 38 секунд

    AlexB,
    imagemagick - руль, GD - в отстой.
    помолодел :)
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 23 марта 2009 г. 13:29, спустя 1 минуту 14 секунд

    Professor, рекомендую http://ru2.php.net/manual/ru/book.imagick.php
    https://smappi.org/ - платформа по созданию API на все случаи жизни

Пожалуйста, авторизуйтесь, чтобы написать комментарий!