9 окт. 2015 г., 19:06

phpThumb/modPhpThumb - наложение текста на изображение

При наложении текста на изображение средствами библиотеки phpThumb/modPhpThumb (фильтр «wmt») текст выглядит коряво (размер — 8-12px, шрифты проверял Arial и Calibri). Вероятно, при наложении текста не используется сглаживание. Соответствующих настроек у phpThumb/modPhpThumb нет.
Шрифт используется не системный, а непосредственно указываемый (параметр «f» фильтра «wmt») Посоветуйте, как получить сглаженный текст на изображении?
P.S. Да и вообще, не понимаю, как сглаживать текст в php средствами gd и imageMagick… Есть 2 функции/метода:
ImageTTFtext() — параметров, отвечающих за сглаживание, нет Imagick::annotateImage() — параметров, отвечающих за сглаживание, нет
Для вывода одинакового для всех картинок текста можно просто накладывать png с подготовленным как надо текстом. Просто я не вижу необходимости динамически внедрять в картинку текст. Подписать можно и в слое, наложенном на картинку средствами html/css.
Для вывода одинакового для всех картинок текста можно просто накладывать png с подготовленным как надо текстом.
Текст индивидуален для каждой картинки. И должен присутствовать непосредственно на картинке, т.к. содержит информацию об авторских правах, комментарий и пр. (без комментария, к примеру, будет непонятно или не совсем понятно, что там изображено и где оно находится).
Просто я не вижу необходимости динамически внедрять в картинку текст. Подписать можно и в слое, наложенном на картинку средствами html/css.
После скачивания картинок с сайта эту информацию (текст) пользователь не увидит. Со всеми вытекающими…
P.S. 1) Запрограммировать можно любой — сколь угодно сложный — функционал 2) Чем сложнее функционал, реализованный на твоём сайте, тем меньше реальных и потенциальных конкурентов
Информация об авторских правах различается (авторы — разные), комментарии — тоже разные. И это всё должно присутствовать на самой картинке, как минимум, из соображений защиты авторских прав
2) Чем сложнее функционал, реализованный на твоём сайте, тем меньше реальных и потенциальных конкурентов
Возможно. Спорить не буду. Знаю только, что при желании можно и watermark почистить. Да, долго и нудно, но можно.
P.S.: как вариант — habrahabr.ru/post/43744/
Знаю только, что при желании можно и watermark почистить
Что вы имеете ввиду под «почистить»? Вручную реализовать сглаживание?
P.S.: как вариант — habrahabr.ru/post/43744/
В этой статье приведённый класс для наложения текста использует ту же GD-функцию ImageTTFtext(), у которой, как я указал выше, нет параметров сглаживания. И вообще, в статье не упоминается про сглаживание. Разве что в комментариях упоминается библиотека magickwand. Её вы имели ввиду?
А как тебе такой хак? На стороне сервера средствами JS+canvas фигачить картинки-копирайты, а далее уже их накладывать вотермарками? Просто в тех же браузерах, сглаживание — это дело самих браузеров. Открой один и тот же сайт в разных браузерах, и шрифты будут по разному сглажены там. На сколько я знаю, лучшее сглаживание у сафари, затем IE! (да-да, там классное сглаживание), ну и только потом хромы с огнелисами и т.п. Как у пыха со сглаживанием дела обстоят, я не в курсе, к сожалению.
А вот, по теме, если смотреть на приведенные примеры, то результаты весьма хороши: zinchenko.us/article/php-images-with-text Очень заинтересовала тема. В разных СМИ, например Медузе, заглушки для отправки в соц сети очень качественно смотрятся (пример:https://meduza.io/image/share_images/15949.png?). Не вручную же они их делают. Соответственно, нужная штука, на новостных сайтах особенно.
На стороне сервера средствами JS+canvas фигачить картинки-копирайты, а далее уже их накладывать вотермарками?
Ну, пока ещё не так припёрло, чтобы до такого дойти. Хотя вариант — решение (и логику взаимодействия с сервером будет нужно проработать, т.к. при наложении используется информация из БД сервера и эту информацию заранее всю на клиент не загрузишь, т.к. её много).
Проверил в последнем FF (41.0) — текст не очень-то уж и сглаженный получается. Это если (JS+canvas)
P.S. Ну а коли не припёрло, дальше использования готовых библиотек двигаться незачем. Стоит подождать, пока в новых версиях imagick будет реализовано сглаживание текста. И после выполнить перегенерацию всех изображений. Сервер стерпит…
Проверил в последнем FF (41.0) — текст не очень-то уж и сглаженный получается. Это если (JS+canvas)
Скорее, совсем не сглаженный
Ясно. Ну, держи в курсе новых достижений. Тема действительно интересная.
Оба класса, предложенные по ссылке, никаких дополнительный действий по сглаживанию не выполняют. Оба класса используют тот же самый ImageTTFtext(). И всё.
Тем не менее, проблема решена. Получил нормальный сглаженный текст. Согласно справке:
color Индекс цвета. Использование отрицательных индексов создает эффект выключенного сглаживания. См. imagecolorallocate().
Стало быть, по умолчанию функция должна выполнять сглаживание. Посмотрел в приближении — сглаживание действительно имеется. Но в реальном масштабе шрифт выглядит коряво. Возможно, я слишком привередлив, но корявость действительно имеется.
А причины тому следующие: 1) небольшой размер шрифта (8-12px) 2) Неудачная комбинация протестированных шрифтов и алгоритмов сглаживания, реализованных в ImageMagick
Решение простое — подбор шрифта, наложение текста, визуальная оценка. Таким способом на размерах текста 9-12px от корявости можно полностью избавиться, что я и сделал. На более мелких шрифтах (< 8-9px) некоторая корявость, скорее всего, останется.

Добавить комментарий