PHP: Рекурсивное создание (mkdir) директорий в Win и слэш

Вчера надо было сделать скрипт, который создаёт директории, но они не всегда создаются в уже существующих директориях. Для этого у функции mkdir() есть третий параметр, который позволяет рекурсивно создавать директории, т.е. если надо создать /dir1/dir2/dir3, но при этом не существует dir2, то можно написать:

Но под Windows такая запись будет выдавать ошибку. Решение было найдено в комментариях на php.net. Под Windows, при рекурсивном создании директории, надо заменять все «/» на «\». Т.е. надо модифицировать код так:

При обычном, не рекурсивном, создании дирректорий заменять «/» на «\» не обязательно. Источник: http://2people.ru/?p=26 Разработка и создание сайтов, интернет-магазинов, веб-приложений, порталов, лэндингов, мобильных приложений (Киев)

Read more

Как заменить однородный фон прозрачным с помощью Imagemagick

Бывает, что на сайт загружаются картинки с однородным фоном и возникает потребность в автоматической замене его (фона) на прозрачный. Часто такая фича нужна для фотографий товаров в интернет-магазине, картинок, которые накладываются на корпоративный фон и других фоток, не портящих дизайн сайта. Вырезать каждую фотку вручную фотошопом довольно грустно, но есть php-методы, с помощью которых это можно «поставить на поток». Как это работает Функция попиксельно ищет где заканчивается однородный цвет. После того, как все координаты вычислены — функция просто вырезает все, что находится снаружи. Замена белого фона прозрачным возможна только если выходная картинка сохранена в формате PNG или GIF. Подойдут и новые форматы WebP и BPG с поддержкой прозрачности. Перед удалением фона всегда лучше ресайзить большую картинку. Если сделать это после — границы могут исказиться. Замена фона, пример на bash Для удаления фона в ImageMagick есть оператор -trim. Он обрезает картинку по заданному цвету:

Перед обрезкой стандартный JPEG конвертируется в PNG. В lossy JPEG’е фон не будет однородным. Соседние пиксели обычно незначительно отличаются по цвету. Например: белый, светло-серый, светло-голубой. Аргумент fuzz устанавливается в значение >0, чтобы разрешить функции считать соседние цвета одинаковыми. Замена фона, пример на PHP Пример обрезки белого фона на картинке (входной файл: image.jpg, выходной — trimmed.png):

Оператор borderImage рисует вокруг картинки рамку 1х1 в цвет фона, после чего оператор trimImage обрезает ее вместе с рамкой. Внимание! Оператор trimImage работает, если Imagick скомпилирован с ImageMagick версии не ниже 6.2.9. Как сделать фон однородным Похожим способом можно заменить неоднородный фон на однородный при конвертации из JPEG в PNG: […]

Read more

10 ключевых функций ImageMagick

В двух словах ImageMagick — консольный графический редактор, работающий практически со всеми существующими форматами графики. Предоставляет максимум функций для обработки картинок — ресайз, конвертация, рисование, анимация, специальные эффекты и т.д. Сложноват для новичков. ImageMagick – незаменимый бесплатный инструмент для создания, конвертации и редактирования картинок. Особенно удобно применять для автоматизации. Форматы ImageMagick работает более чем со 100 форматами изображений, в том числе и с основными веб-форматами — JPEG, SVG, GIF, WebP и PNG. Установка Все устанавливается из пакетов :

При этом станут доступны 7 утилит: display, animate, identify, convert, montage, mogrify и composite. Далее пройдемся по самым полезным и популярным свойствам ImageMagick. 1. Конвертация С помощью функции convert Вы можете конвертировать картинки из одного формата в другой. Простейший пример — переход от JPEG к PNG:

2. Ресайз Уменьшайте, увеличивайте картинки, задавая необходимый размер.

3. Рисование Добавляйте к картинкам текст, геометрические фигуры, линии, кривые. Например, простая фигура — белый круг на голубом фоне:

4. Анимация Вы можете создать GIF-анимацию — несколько картинок в рамках одного файла, сменяющие друг друга через заданный промежуток времени. Выполняется также с помощью утилиты convert. Ниже пример простой закольцованной анимации, где каждая новая картинка сменяет предыдущую:

Правильно комбинируя картинки, можно создавать эффект движения и даже короткие видео. 5. Специальные эффекты Размытие и увеличение резкости — неотъемлемые части редактирования. Размытие может показаться лишней функцией, пока не понадобится создать фон или тени. Можно также “размывать” четкие границы геометрических фигур. Параметр -blur 0x8 определяет степень размытия.

6. Прозрачность Добавление прозрачных областей, и с их помощью […]

Read more

Сессии. Подробное описание работы и объяснение механизма

Введение Как устроены, и как работают сессии? Область применения. Возможные проблемы и их устранение. Безопасность Дополнительная информация: Пример авторизации с помощью сессий ОПС! Очень Полезные Ссылки: Comments Введение Сессии – это на самом деле очень просто. Надо только понимать, для чего они нужны и как устроены. Ответим сначала на первый вопрос. Как показано в соответствующем разделе этого FAQ, веб-сервер не поддерживает постоянного соединения с клиентом, и каждый запрос обрабатывается, как новый, безо всякой связи с предыдущими. То есть, нельзя ни отследить запросы от одного и того же посетителя, ни сохранить для него переменные между просмотрами отдельных страниц. Вот для решения этих двух задач и были изобретены сессии. Собственно, сессии, если в двух словах – это механизм, позволяющий однозначно идентифицировать браузер и создающий для этого браузера файл на сервере, в котором хранятся переменные сеанса. Подробно расписывать нужду в таком механизме я не буду. Это такие хрестоматийнык случаи, как корзина покупок в е-магазине, авторизация, а так же, и не совсем тривиальные проблемы, такие, например, как защита интерактивных частей сайта от спама. В принципе, довольно несложно сделать собственный аналог сессий, не такой функциональный, как встроенный в PHP, но похожий по сути. На куках и базе данных. При запросе скрипта смотрим, пришла ли кука с определенным именем. Если куки нет, то ставим ее и записываем в базу новую строку с данными пользователя. Если кука есть, то читаем из базы данные. Еще одним запросом удаляем из базы старые записи и вот у нас готов механизм сессий. Совсем несложно. Но есть некоторые нюансы, которые делают предпочтительным […]

Read more
1 2 3 4