CImageHandler - работа с изображениями

Выкладываем свои наработки
alexxsilvers
Сообщения: 80
Зарегистрирован: 2012.11.06, 12:40
Откуда: Москва

Re: CImageHandler - работа с изображениями

Сообщение alexxsilvers »

Сейчас нету возможности размещать watermark строго по центру картинки?
Аватара пользователя
kosenka
Сообщения: 677
Зарегистрирован: 2009.09.26, 12:41
Откуда: москва
Контактная информация:

Re: CImageHandler - работа с изображениями

Сообщение kosenka »

Tokolist писал(а):kosenka, еще раз спасибо за код. это хороший пинок мне чтобы допилить компонент :) создал отдельную ветку в репозитории, т.к. есть несколько идей по улучшению кода.
Да, скорее всего код не оптимален, но он работает :)
Если надо еще "попинать", пиши :)
Аватара пользователя
Bodyanuk
Сообщения: 33
Зарегистрирован: 2013.05.06, 10:24
Откуда: С исходников
Контактная информация:

Re: CImageHandler - работа с изображениями

Сообщение Bodyanuk »

Дополнение - супер! Но есть одна серьёзная проблема. ВОзможно потому что я так и не научился пользоваться разширением. Проблема в том что при сохранении GIF-анимации... анимация пропадает. Кто подскажет решение этого? Допустим я гружу куртинку по урлу
http://img-fotki.yandex.ru/get/5627/144 ... b63cfb78_L
вот таким кодом

Код: Выделить всё

        $path = $_SERVER['DOCUMENT_ROOT'].Yii::app()->params['gif_path'];
        $name = time().'-'.substr(strrchr($img,'/'),1).'.gif';
        $ih = new CImageHandler();
        $ih->load($img)->save($path.$name);
 
Аватара пользователя
Tokolist
Сообщения: 113
Зарегистрирован: 2010.03.01, 22:03

Re: CImageHandler - работа с изображениями

Сообщение Tokolist »

Используйте ImageMagic, т.к. GD не сохраняет анимацию (разве только разбивать на фреймы каким-то образом), а обертка над IM все еще на стадии доработки. Возможно заработает также версия kosenka, которую я сейчас использую как основу.
Аватара пользователя
twix
Сообщения: 86
Зарегистрирован: 2011.12.12, 18:25

Re: CImageHandler - работа с изображениями

Сообщение twix »

Подскажите как отправить файл на скачку без сохранения изображения?

Код: Выделить всё

$image = Yii::app()->ih->load($path)->thumb(200, 200);
return Yii::app()->getRequest()->sendFile($photo->name, $image); 
Аватара пользователя
matios
Сообщения: 76
Зарегистрирован: 2013.03.17, 20:44
Откуда: Россия, Лиски

Re: CImageHandler - работа с изображениями

Сообщение matios »

а я вот немного подправил функцию crop(), так как когда загружаются фото, голова может обрезаться. Обычно идут соотношения обрезки фото 20% \ 80% (голова\ноги).

получилось так:

Код: Выделить всё

    public function crop($width, $height, $startX = false, $startY = false, $percent = false) //тут добавил последний аргумент
    {
        $this->checkLoaded();

        $width = (int) $width;
        $height = (int) $height;
        
        //Centered crop
         $startX = $startX === false ? floor(($this->width - $width) / 2) : intval($startX);
        $denominator = $percent === false ? 2 : floor(100 / $percent); //тут добавил вычисление знаменателя
        $startY = $startY === false ? floor(($this->height - $height) / $denominator) : intval($startY); //сюда подставил знаменатель

              //Дальше как и было
вызов соответственно такой:

Код: Выделить всё

crop($width, $height, false, false, 20);
Получается, что обрежет сверху 20%, а снизу 80%.
Зачем это нужно было? Дело в том, что у меня в проекте предполагались квадратные аватарки и получалось так, что часть головы обрезалась. Поэтому пришлось писать костыль. Фиксированный отступ не помогает, так как не знаешь, какую пользователь аватарку загрузит маленькую - будет большой отступ, большую - будет малый отступ. Было бы не плохо, если бы вы учли данный момент в следующих версиях. И еще лучше было бы, если компонент грузил бы фотки на сервак))

А вообще - очень классный компонент))
Joseph Jevelin
Сообщения: 339
Зарегистрирован: 2012.01.06, 22:07

Re: CImageHandler - работа с изображениями

Сообщение Joseph Jevelin »

IM и JCrop добавить и цены бы ему не было)
oki84
Сообщения: 72
Зарегистрирован: 2011.08.01, 14:09

Re: CImageHandler - работа с изображениями

Сообщение oki84 »

Подскажите, если у меня инициализация идёт в конфиге:

Код: Выделить всё

...
        'ih'=>array(
            'class'=>'application.components.ImageHandler.CImageHandler',
            'engine'=>'IM'
        ),...
То получается я не могу задать engine из-за того что она private?
Вообще это паранойя или моё ужасное понимание ООП?
Последний раз редактировалось oki84 2013.11.02, 12:09, всего редактировалось 1 раз.
oki84
Сообщения: 72
Зарегистрирован: 2011.08.01, 14:09

Re: CImageHandler - работа с изображениями

Сообщение oki84 »

Кстати у меня не заработал вариант от касенки. хотя IM точно установлен, не сработало простое сохранение, а на crop вообще выдал что не может применять функцию не над объектом(( с нетерпением жду вашей версии с IM
Joseph Jevelin
Сообщения: 339
Зарегистрирован: 2012.01.06, 22:07

Re: CImageHandler - работа с изображениями

Сообщение Joseph Jevelin »

oki84 писал(а):Кстати у меня не заработал вариант от касенки. хотя IM точно установлен, не сработало простое сохранение, а на crop вообще выдал что не может применять функцию не над объектом(( с нетерпением жду вашей версии с IM
Тоже самое, довольствуюсь GD :)
oki84
Сообщения: 72
Зарегистрирован: 2011.08.01, 14:09

Re: CImageHandler - работа с изображениями

Сообщение oki84 »

Кстати, ещё небольшая просьба поменять местами параметры в
public function watermark($watermarkFile, $offsetX, $offsetY, $corner = self::CORNER_RIGHT_BOTTOM, $zoom = false)
на
public function watermark($watermarkFile, $offsetX, $offsetY, $zoom = false, $corner = self::CORNER_RIGHT_BOTTOM )
Аватара пользователя
Bezlepkin
Сообщения: 731
Зарегистрирован: 2012.11.10, 18:59
Контактная информация:

Re: CImageHandler - работа с изображениями

Сообщение Bezlepkin »

Скажите, сильно лучшье это расширение чем image кохановский?
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: CImageHandler - работа с изображениями

Сообщение yiijeka »

Откуда мы знаем, кому-то и кохановское г, пока сами не попробуете ничего не поймёте.
Аватара пользователя
Bezlepkin
Сообщения: 731
Зарегистрирован: 2012.11.10, 18:59
Контактная информация:

Re: CImageHandler - работа с изображениями

Сообщение Bezlepkin »

Я так понимаю это все оболочки для простой работы с библиотеками GD и ImageMagic?

Еще вопрос, я раньше не работал вплотную с изображениями (все из-зи CMSок)
Но тут идут разговоры что типа у CImageHandler нет кэша. А в каком случае применяется кэш для изображений?
Аватара пользователя
Bezlepkin
Сообщения: 731
Зарегистрирован: 2012.11.10, 18:59
Контактная информация:

Re: CImageHandler - работа с изображениями

Сообщение Bezlepkin »

Еще вопрос, а как подключить GD или ImageMagic?
Аватара пользователя
Bezlepkin
Сообщения: 731
Зарегистрирован: 2012.11.10, 18:59
Контактная информация:

Re: CImageHandler - работа с изображениями

Сообщение Bezlepkin »

Подскажите еще про кэш!
Аватара пользователя
Bezlepkin
Сообщения: 731
Зарегистрирован: 2012.11.10, 18:59
Контактная информация:

Re: CImageHandler - работа с изображениями

Сообщение Bezlepkin »

Почему то не сохраняет в определенное расширение :(

Yii::app()->ih->load($_FILES['file']['tmp_name'])
->thumb(70, 70)
->save("$uploadDirectory/$path", 2, 100);
dr_yii
Сообщения: 11
Зарегистрирован: 2014.05.13, 14:39

Re: CImageHandler - работа с изображениями

Сообщение dr_yii »

Подскажите, как сделать с помощью данного расширения уменьшеную картинку указанного размера с сохранением пропорций и с прозрачным фоном.
Похоже что метод resizeCanvas() то что надо. Уменьшает картинку и по краям добавляет белый фон (либо же 3 параметром можно другой фон задать). Но мне нужен именно прозрачный фон.

Пробывал в исходниках прописать imagecolortransparent, но никакого эффекта.
mstdmstd
Сообщения: 72
Зарегистрирован: 2014.03.07, 13:54

Re: CImageHandler - работа с изображениями

Сообщение mstdmstd »

1) Спасибо автору за труды
2) И вопрос : я накладывал watermark как и описано у автора :

Код: Выделить всё

Yii::app()->ih->load( $dst_filename )->watermark( $this->app_config['small_watermark'], 10, 10, CImageHandler::CORNER_RIGHT_BOTTOM, 0.1)->save( $dst_filename );
Но в результате получилась картинка поверху, но никак не водяной знак.
Изображение

Взял картинку для этого http://www.wpclipart.com/animals/H/hors ... ermark.png

Но водяного знака по-прежнему нет .

Неправильная картинка или у меня в системе чего-то не установлено?
phpinfo отображает :
gd
GD Support enabled
GD Version bundled (2.0.34 compatible)
FreeType Support enabled
FreeType Linkage with freetype
FreeType Version 2.4.3
GIF Read Support enabled
GIF Create Support enabled
JPEG Support enabled
libJPEG Version 6b
PNG Support enabled
libPNG Version 1.2.46
WBMP Support enabled
XBM Support enabled
Ответить