CImageHandler - работа с изображениями
-
- Сообщения: 80
- Зарегистрирован: 2012.11.06, 12:40
- Откуда: Москва
Re: CImageHandler - работа с изображениями
Сейчас нету возможности размещать watermark строго по центру картинки?
Re: CImageHandler - работа с изображениями
Да, скорее всего код не оптимален, но он работаетTokolist писал(а):kosenka, еще раз спасибо за код. это хороший пинок мне чтобы допилить компонент создал отдельную ветку в репозитории, т.к. есть несколько идей по улучшению кода.
Если надо еще "попинать", пиши
- Bodyanuk
- Сообщения: 33
- Зарегистрирован: 2013.05.06, 10:24
- Откуда: С исходников
- Контактная информация:
Re: CImageHandler - работа с изображениями
Дополнение - супер! Но есть одна серьёзная проблема. ВОзможно потому что я так и не научился пользоваться разширением. Проблема в том что при сохранении GIF-анимации... анимация пропадает. Кто подскажет решение этого? Допустим я гружу куртинку по урлу
http://img-fotki.yandex.ru/get/5627/144 ... b63cfb78_L
вот таким кодом
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);
Re: CImageHandler - работа с изображениями
Используйте ImageMagic, т.к. GD не сохраняет анимацию (разве только разбивать на фреймы каким-то образом), а обертка над IM все еще на стадии доработки. Возможно заработает также версия kosenka, которую я сейчас использую как основу.
Re: CImageHandler - работа с изображениями
Подскажите как отправить файл на скачку без сохранения изображения?
Код: Выделить всё
$image = Yii::app()->ih->load($path)->thumb(200, 200);
return Yii::app()->getRequest()->sendFile($photo->name, $image);
Re: CImageHandler - работа с изображениями
а я вот немного подправил функцию crop(), так как когда загружаются фото, голова может обрезаться. Обычно идут соотношения обрезки фото 20% \ 80% (голова\ноги).
получилось так:
вызов соответственно такой:
Получается, что обрежет сверху 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);
Зачем это нужно было? Дело в том, что у меня в проекте предполагались квадратные аватарки и получалось так, что часть головы обрезалась. Поэтому пришлось писать костыль. Фиксированный отступ не помогает, так как не знаешь, какую пользователь аватарку загрузит маленькую - будет большой отступ, большую - будет малый отступ. Было бы не плохо, если бы вы учли данный момент в следующих версиях. И еще лучше было бы, если компонент грузил бы фотки на сервак))
А вообще - очень классный компонент))
-
- Сообщения: 339
- Зарегистрирован: 2012.01.06, 22:07
Re: CImageHandler - работа с изображениями
IM и JCrop добавить и цены бы ему не было)
Re: CImageHandler - работа с изображениями
Подскажите, если у меня инициализация идёт в конфиге:
То получается я не могу задать engine из-за того что она private?
Вообще это паранойя или моё ужасное понимание ООП?
Код: Выделить всё
...
'ih'=>array(
'class'=>'application.components.ImageHandler.CImageHandler',
'engine'=>'IM'
),...
Вообще это паранойя или моё ужасное понимание ООП?
Последний раз редактировалось oki84 2013.11.02, 12:09, всего редактировалось 1 раз.
Re: CImageHandler - работа с изображениями
Кстати у меня не заработал вариант от касенки. хотя IM точно установлен, не сработало простое сохранение, а на crop вообще выдал что не может применять функцию не над объектом(( с нетерпением жду вашей версии с IM
-
- Сообщения: 339
- Зарегистрирован: 2012.01.06, 22:07
Re: CImageHandler - работа с изображениями
Тоже самое, довольствуюсь GDoki84 писал(а):Кстати у меня не заработал вариант от касенки. хотя IM точно установлен, не сработало простое сохранение, а на crop вообще выдал что не может применять функцию не над объектом(( с нетерпением жду вашей версии с IM
Re: CImageHandler - работа с изображениями
Кстати, ещё небольшая просьба поменять местами параметры в
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 )
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 )
Re: CImageHandler - работа с изображениями
Скажите, сильно лучшье это расширение чем image кохановский?
Re: CImageHandler - работа с изображениями
Откуда мы знаем, кому-то и кохановское г, пока сами не попробуете ничего не поймёте.
Re: CImageHandler - работа с изображениями
Я так понимаю это все оболочки для простой работы с библиотеками GD и ImageMagic?
Еще вопрос, я раньше не работал вплотную с изображениями (все из-зи CMSок)
Но тут идут разговоры что типа у CImageHandler нет кэша. А в каком случае применяется кэш для изображений?
Еще вопрос, я раньше не работал вплотную с изображениями (все из-зи CMSок)
Но тут идут разговоры что типа у CImageHandler нет кэша. А в каком случае применяется кэш для изображений?
Re: CImageHandler - работа с изображениями
Еще вопрос, а как подключить GD или ImageMagic?
Re: CImageHandler - работа с изображениями
Подскажите еще про кэш!
Re: CImageHandler - работа с изображениями
Почему то не сохраняет в определенное расширение
Yii::app()->ih->load($_FILES['file']['tmp_name'])
->thumb(70, 70)
->save("$uploadDirectory/$path", 2, 100);
Yii::app()->ih->load($_FILES['file']['tmp_name'])
->thumb(70, 70)
->save("$uploadDirectory/$path", 2, 100);
Re: CImageHandler - работа с изображениями
Подскажите, как сделать с помощью данного расширения уменьшеную картинку указанного размера с сохранением пропорций и с прозрачным фоном.
Похоже что метод resizeCanvas() то что надо. Уменьшает картинку и по краям добавляет белый фон (либо же 3 параметром можно другой фон задать). Но мне нужен именно прозрачный фон.
Пробывал в исходниках прописать imagecolortransparent, но никакого эффекта.
Похоже что метод resizeCanvas() то что надо. Уменьшает картинку и по краям добавляет белый фон (либо же 3 параметром можно другой фон задать). Но мне нужен именно прозрачный фон.
Пробывал в исходниках прописать imagecolortransparent, но никакого эффекта.
Re: CImageHandler - работа с изображениями
1) Спасибо автору за труды
2) И вопрос : я накладывал watermark как и описано у автора :
Но в результате получилась картинка поверху, но никак не водяной знак.
Взял картинку для этого http://www.wpclipart.com/animals/H/hors ... ermark.png
Но водяного знака по-прежнему нет .
Неправильная картинка или у меня в системе чего-то не установлено?
phpinfo отображает :
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