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

Discussion in 'Решение различных задач по парсингу' started by OnMan, Apr 26, 2012.

  1. OnMan

    OnMan New Member Пользователи

    Joined:
    Apr 20, 2012
    Messages:
    11
    Можно ли при сохранении картинки на диск менять ее размер?
    Например, при парсинге получаем картинку 150X150px(не принципиально) , но сохраняем ее уже в другом размере нужном мне, например 32Х32px?

    И как это сделать, если можно.

    Спасибо.
     
    Last edited by a moderator: May 3, 2012
  2. Valiks

    Valiks New Member Супер Модератор

    Joined:
    Jan 18, 2012
    Messages:
    554
    Location:
    Всё время в скэйпе
    Нужно задать настройки в шаблоне
    <img src="<CD_GRAN_1!>" alt="inverter" title="Абракадабра" width="150">
    Главный момент здесь тот, что надо задать только один параметр, второй (height="ХХХ") проставится сам, пропорционально.
     
  3. OnMan

    OnMan New Member Пользователи

    Joined:
    Apr 20, 2012
    Messages:
    11
    Спасибо за ответ, но это не совсем то...

    То что вы указали это вывод-форматирование картинки. Хорошая вещь если нужно решить подобную задачу быстро... Но нужно наоборот экономно.

    Так как за день парсинга набегает около 30гиг картинок, размер этих картинок примерно 500х500, их нужно сделать меньшим размером, чтобы меньше места занимали на диске, тоесть нужен именно ресайз и не форматированный вывод.

    Я эту задачу решил, написав свой скрипт обработчик, запускающийся по крону.

    Но это опять же костыль, желательно чтобы именно в самом CD был ресайз картинок... именно РЕСАЙЗ.

    Спасибо.
     
  4. Valiks

    Valiks New Member Супер Модератор

    Joined:
    Jan 18, 2012
    Messages:
    554
    Location:
    Всё время в скэйпе
    Используйте <GETGOOGLEIMAGE|size=0></GETGOOGLEIMAGE>, парсите картинки из инета, сразу нужных размеров. Либо,- Фотошоп, или програмки для ресайза. Их много, в том числе и бесплатные.
     
  5. lexalevi4

    lexalevi4 New Member Пользователи

    Joined:
    Apr 12, 2012
    Messages:
    25
    php скрипт + image magick
    можно не только изменить размер, но и срезать логотипы если надо

    Этот скрипт скачает картинку по урлу и создаст из нее другую с шириной 150

    Будет работать под виндой, в линуксе $convert будет другой немного

    PHP:
    $ch curl_init ();
    curl_setopt ($chCURLOPT_URL$url); // $url это урл картинки, полученный от программы
    $fp fopen('images/'.$filename'.jpg''wb'); // Создаем файл в который будет скачана картинка
    curl_setopt($chCURLOPT_FILE$fp);
    curl_setopt($chCURLOPT_HEADER0);
    $result=curl_exec ($ch);
    curl_close($ch);
    fclose($fp);
                
    $convert "C:\\image_magick\\convert.exe Z:\\home\\localhost\\www\\site\\images\\".$filename.".jpg -resize 150 Z:\\home\\localhost\\www\\site\\images\\".$filename."_new.jpg" // генерируем команду для cmd.exe
    exec($convert) ; // исполняем
     
    Last edited: May 3, 2012
  6. OnMan

    OnMan New Member Пользователи

    Joined:
    Apr 20, 2012
    Messages:
    11
    Вот действительно толковое решение. Спасибо.
     
  7. Valiks

    Valiks New Member Супер Модератор

    Joined:
    Jan 18, 2012
    Messages:
    554
    Location:
    Всё время в скэйпе
    Интересно
    Как этим пользоваться на деле
    К этому делу ещё бы описание. В таком виде не очень многие смогут им воспользоваться
     
  8. lexalevi4

    lexalevi4 New Member Пользователи

    Joined:
    Apr 12, 2012
    Messages:
    25
    Должно стоять расширение Curl для PHP. (в денвере по дефлоту нету)

    Качаем Ссылки недоступны для гостей . Это бесплатный консольный графический пакет. Есть как на винду так и линукс.
    Потом пишем скрипт как тот, что я написал.
    Отправляем в него из контентДоунлоадера ссылку на картинку, саму картинку можно не качать. Если много то отправляем повторяющейся границей (тогда разбиваем в скрипте на массив и в цикле перебираем).


    $convert - это команда виндового cmd.exe сперва путь до имаджмаджика и конкретно файла convert.exe, потом исходный файл, дальше что с ним делать (-resize 150) 150 это ширина, можно и по высоте. Дальше файл который нужно получить.


    PHP:
    $convert "C:\\image_magick\\convert.exe Z:\\home\\localhost\\www\\site\\images\\".$filename.".jpg -resize 150 Z:\\home\\localhost\\www\\site\\images\\".$filename."_new.jpg" 

    exec($convert) ; //исполняет

    При этом качество картинок не убивается, как если делать это средствами PHP.


    В денвере бывает падает апач от этого дела, так что если надо много и постоянно, то можно поднять виртуанку на линуксе. Там всё работает отлично)

    Можно сразу отправлять готовые картики на сервер POST запросом

    PHP:
    $filename ="Z:\\home\\localhost\\www\\site\\images\\".$filename."_new.jpg";
    $postdata0 = array(
        
    'method'    => 'post',
        
    'img1' =>  '@'.$filename
            
    // Можно отправить еще какието данные чтобы правильно назвать и вписать в базу. 
    );
    $ch0 curl_init();
    curl_setopt($ch0CURLOPT_URL,             $url_on_host); // это урл скрипта, который поймает картинку
    curl_setopt($ch0CURLOPT_RETURNTRANSFER,     1);
    curl_setopt($ch0CURLOPT_TIMEOUT,             60);
    curl_setopt($ch0CURLOPT_POST,                 1);
    curl_setopt($ch0CURLOPT_POSTFIELDS,         $postdata0);
    $result0 curl_exec($ch0);
                
     
    Last edited: May 3, 2012
    Valiks likes this.
  9. Valiks

    Valiks New Member Супер Модератор

    Joined:
    Jan 18, 2012
    Messages:
    554
    Location:
    Всё время в скэйпе
    Отлично, спасибо за подробное объяснение. надеюсь, оно многим поможет.
    Оставляйте благодарность, кому помогло, будем знать степень востребованности, тогда, может быть уговорим автора внедрить такую возможность в прогрумму
     

Share This Page