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

Тема в разделе "Решение различных задач по парсингу", создана пользователем OnMan, 26 апр 2012.

  1. OnMan

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

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

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

    Спасибо.
     
    Последнее редактирование модератором: 3 май 2012
  2. Valiks

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

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

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

    Регистрация:
    20 апр 2012
    Сообщения:
    11
    Спасибо за ответ, но это не совсем то...

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

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

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

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

    Спасибо.
     
  4. Valiks

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

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

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

    Регистрация:
    12 апр 2012
    Сообщения:
    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) ; // исполняем
     
    Последнее редактирование: 3 май 2012
  6. OnMan

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

    Регистрация:
    20 апр 2012
    Сообщения:
    11
    Вот действительно толковое решение. Спасибо.
     
  7. Valiks

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

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

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

    Регистрация:
    12 апр 2012
    Сообщения:
    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);
                
     
    Последнее редактирование: 3 май 2012
    Valiks нравится это.
  9. Valiks

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

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

Поделиться этой страницей