CImageHandler - работа с изображениями
Re: CImageHandler - работа с изображениями
Вынес документацию на гуглкод http://code.google.com/p/yii-components ... ageHandler
Постепенно все мои компоненты будут переезжать туда
Постепенно все мои компоненты будут переезжать туда
Re: CImageHandler - работа с изображениями
лучше гитхаб тогда
Re: CImageHandler - работа с изображениями
Полезная вещь,как-нибудь побробую единственное еще что смутило, это метод с кучей параметров, уж очень трудно будет их запомнить даже с учетом IDE и прочего, замените на массив или объект что-ли)
это
на
тогда будет проще потом задавать если что и модернизировать как либо на свой вкус
P.S. и сделайте под 5.3 с namespace
это
Код: Выделить всё
public function text($text, $fontFile, $size=12, $color=array(0, 0, 0), $corner=self::CORNER_LEFT_TOP, $offsetX=0, $offsetY=0, $angle=0)
Код: Выделить всё
public function text(CImageText $text); //все параметры вынесети в объект
Код: Выделить всё
$ih->text(new CImageText(array(
'corner' => CImageText::CORNER_LEFT_TOP, //etc...
))); //все параметры вынесети в объект
Re: CImageHandler - работа с изображениями
Обновил компонент. Изменения:
1. Перезагрузка картинки из памяти вместо харда
2. Сохранение полупрозрачности работало не всегда. Исправлено.
3. Исправлено некорректное изменение размеров изображения в resizeCanvas
4. Добавлен метод grayscale для создания черно-белых изображений
Всем большое спасибо за критику и поддержку! Отдельное спасибо HotAlex и Sc@M.
Заливку бекграунда делать не стал, так как существует хотя и не элегантный, но очень простой воркераунд:
Также не добавлял поддержку старых версий PHP и GD (как у Sc@M), поскольку Yii и так требует PHP 5.
Ссылки на документацию и загрузки в первом посте.
В планах на будущее:
1. кэширование (пока в наибольшем приоритете)
2. "амбилайт" превюшки
3. обертка над ImageMagic, с возможностью переключения между GD и ImageMagic (хотя не уверен что есть такая необходимость)
1. Перезагрузка картинки из памяти вместо харда
2. Сохранение полупрозрачности работало не всегда. Исправлено.
3. Исправлено некорректное изменение размеров изображения в resizeCanvas
4. Добавлен метод grayscale для создания черно-белых изображений
Всем большое спасибо за критику и поддержку! Отдельное спасибо HotAlex и Sc@M.
Заливку бекграунда делать не стал, так как существует хотя и не элегантный, но очень простой воркераунд:
Код: Выделить всё
Yii::app()->ih->load($_SERVER['DOCUMENT_ROOT'] . '/upload/test.png')
->resizeCanvas(Yii::app()->ih->width,Yii::app()->ih->height,array(0, 255, 0))
->show();
Ссылки на документацию и загрузки в первом посте.
В планах на будущее:
1. кэширование (пока в наибольшем приоритете)
2. "амбилайт" превюшки
3. обертка над ImageMagic, с возможностью переключения между GD и ImageMagic (хотя не уверен что есть такая необходимость)
Пока гуглкод, потом возможно переедем.Troy писал(а):лучше гитхаб тогда
Спасибо! Идея хорошая, подумаю как лучше реализовать.Skiller писал(а):Полезная вещь,как-нибудь побробую единственное еще что смутило, это метод с кучей параметров, уж очень трудно будет их запомнить даже с учетом IDE и прочего, замените на массив или объект что-ли)
Это уже после выхода Yii2Skiller писал(а):P.S. и сделайте под 5.3 с namespace
Re: CImageHandler - работа с изображениями
С гитхабом было бы намного проще помогать, я бы за оберетку над имагиком бы взялся.
Re: CImageHandler - работа с изображениями
присоеденяюсь к просьбе о переносе в репозиторий, хоть git хоть mercurial
Ищу работу: viewtopic.php?f=31&t=50584
GitHub: https://github.com/mirocow
Стоимость работ: от $30 час
тел/vbr/wsp: +7 (925) 514-63-53
skype/tlgrm: Mirocow
email: mr.mirocow@gmail.com
PHP Senior Developer aka Mirocow
GitHub: https://github.com/mirocow
Стоимость работ: от $30 час
тел/vbr/wsp: +7 (925) 514-63-53
skype/tlgrm: Mirocow
email: mr.mirocow@gmail.com
PHP Senior Developer aka Mirocow
Re: CImageHandler - работа с изображениями
На гитхабе каждый второй имеет свой аккаунт, было бы всяко проще помогать.
Re: CImageHandler - работа с изображениями
хорошо, в течении недели переедем на гитхаб. от помощи не откажусь, конечно
Re: CImageHandler - работа с изображениями
Код мигрировал на гитхаб https://github.com/tokolist/yii-components
Обновил ссылки в первом посте
Страница с гуглкода в скором времени будет удалена
Обновил ссылки в первом посте
Страница с гуглкода в скором времени будет удалена
Re: CImageHandler - работа с изображениями
А я вот битый час понять не могу в чём причина неудачи? Натыкаясь на этот компонент сервер возвращает 500 ошибку и больше ничего. Тот же $photo->saveAs(путь к файлу) - прекрасно работает, а Yii::app()->ih упорно не хочет обрабатывать картинку и ничего в ответ не говорит, только в случае неверного указания пути к файлу он выдаёт исключение, мол, нет такого файла
Код: Выделить всё
foreach($model->photo as $photo)
{
$atype = explode('/', $photo->type);
$type = $atype[1];
Yii::app()->ih
->load($photo->tempName)
->thumb('150', '113')
->save($dir . '/thumb/'. md5_file($photo->tempName) . '.' . $type)
->reload()
->thumb('600', '450')
->save($dir . '/'. md5_file($photo->tempName) . '.' . $type);
}
Re: CImageHandler - работа с изображениями
paramonov Сложно сказать из-за чего может возникать эта ошибка, но 500 это ошибка сервера и вероятней всего что-то не так с настройками сервера (точней сказать не смогу, предполагаю что-то с библиотекой GD).
Хочу еще обратится к сообществу с просьбой о совете об организации кэширования. У меня есть несколько возможных вариантов, пока не знаю на каком лучше остановится:
1. htaccess проверяет существование файла и если файл не существует, то он создается скриптом
2. компонент сначала создает сценарий (массив с операциями, которые должны быть выполнены над картинкой) без обработки изображения, а при вызове save() выполняется проверка существования файла и если не существует, то сценарий выполняется
3. то же что и пункт 2, но вместо проверки существования файла проверяется его дата модификации и сравнивается с картинкой-оригиналом
Первых два пункта требуют также от разработчика позаботится об удалении кэшированных фалов в случае изменения картинки-оригинала (хотя можно подумать как добавить такой функционал в компонент).
Самый производительный на мой взгляд первый вариант.
Хочу еще обратится к сообществу с просьбой о совете об организации кэширования. У меня есть несколько возможных вариантов, пока не знаю на каком лучше остановится:
1. htaccess проверяет существование файла и если файл не существует, то он создается скриптом
2. компонент сначала создает сценарий (массив с операциями, которые должны быть выполнены над картинкой) без обработки изображения, а при вызове save() выполняется проверка существования файла и если не существует, то сценарий выполняется
3. то же что и пункт 2, но вместо проверки существования файла проверяется его дата модификации и сравнивается с картинкой-оригиналом
Первых два пункта требуют также от разработчика позаботится об удалении кэшированных фалов в случае изменения картинки-оригинала (хотя можно подумать как добавить такой функционал в компонент).
Самый производительный на мой взгляд первый вариант.
Re: CImageHandler - работа с изображениями
Спасибо! Хорошая работа!
Правда заметил что imagecopy иногда чудит в вотермарке: При попытки копирования прозрачной пнг-шки на гифы вместо копирования получается только чёрный прямоугольник. Но это уже траблы гд.
Правда заметил что imagecopy иногда чудит в вотермарке: При попытки копирования прозрачной пнг-шки на гифы вместо копирования получается только чёрный прямоугольник. Но это уже траблы гд.
Re: CImageHandler - работа с изображениями
Спасибо! Я думаю это можно будет как-нибудь исправить, попробую воссоздать проблему.borwen писал(а):Спасибо! Хорошая работа!
Правда заметил что imagecopy иногда чудит в вотермарке: При попытки копирования прозрачной пнг-шки на гифы вместо копирования получается только чёрный прямоугольник. Но это уже траблы гд.
Добавил также ридми на английском и русском языках.
Re: CImageHandler - работа с изображениями
Добрый день. Пользуюсь вашим расширением. был очень доволен, но решил перед выкатыванием в продакшен потестить на больших фотках и уперся в лимит по объему памяти для процесса php. При работе с изображением 4500 на 3000 пикселей объемом 6600 Кбайт jpg он выжирает по 150-200 метров.
Мой вопрос такой: вы, как человек разработавший код, видите ли возможным оптимизировать расход памяти, или там просто gd такая прожорливая и мне нет смысла перебирать ваш код?
Еще раз респект за расширение и успехов в дальнейших работах.
Мой вопрос такой: вы, как человек разработавший код, видите ли возможным оптимизировать расход памяти, или там просто gd такая прожорливая и мне нет смысла перебирать ваш код?
Еще раз респект за расширение и успехов в дальнейших работах.
Re: CImageHandler - работа с изображениями
Процентов 80 точно отжирает Gd, как не больше.zhuk99 писал(а):Добрый день. Пользуюсь вашим расширением. был очень доволен, но решил перед выкатыванием в продакшен потестить на больших фотках и уперся в лимит по объему памяти для процесса php. При работе с изображением 4500 на 3000 пикселей объемом 6600 Кбайт jpg он выжирает по 150-200 метров.
Мой вопрос такой: вы, как человек разработавший код, видите ли возможным оптимизировать расход памяти, или там просто gd такая прожорливая и мне нет смысла перебирать ваш код?
Еще раз респект за расширение и успехов в дальнейших работах.
Re: CImageHandler - работа с изображениями
Да, это GD. Несколько недель назад хранение оригинального изображения было перенесено с диска в память для оптимизации скорости выполнения, поэтому если для Вас расход памяти важен, можно использовать предыдущую версию.
Думаю есть смысл добавить опцию, переключающую хранение оригинала на диск или память.
Думаю есть смысл добавить опцию, переключающую хранение оригинала на диск или память.
Re: CImageHandler - работа с изображениями
Привет, к PNG с прозрачным фоном при сохранении подставляет фон. В чем проблема?
Re: CImageHandler - работа с изображениями
Вы используете последнюю версию?
Re: CImageHandler - работа с изображениями
Да, оказывается не последнюю пользовал, спасибо!
Re: CImageHandler - работа с изображениями
помогите полному нубу. пытаюсь изучить даный фреймворк на примере создания фотогалереи. натолкнулся на ваш компонент но незнаю куда пихать его код. закинул сам компонент в папку компонентов. прописал его в конфиге майн.
куда пихать например этот код?
записал его в behaviors() но мне теперь при открытии страницы выводит Invalid image file.
еще такой вопрос, если мне нужно чтобы имя генерировалось по хешу даты, если я пропишу
оно в базу какое имя сохранит?
куда пихать например этот код?
Код: Выделить всё
Yii::app()->ih
->load($_SERVER['DOCUMENT_ROOT'] . '/uploads/image.jpg')
->crop(20, 20, 200, 200)
->save();
еще такой вопрос, если мне нужно чтобы имя генерировалось по хешу даты, если я пропишу
Код: Выделить всё
Yii::app()->ih
->load($_SERVER['DOCUMENT_ROOT'] . '/uploads/'.md5(time()).'.jpg')
->crop(20, 20, 200, 200)
->save();