cyrax_02 09 октября 2015 1 10
При наложении текста на изображение средствами библиотеки phpThumb/modPhpThumb (фильтр «wmt») текст выглядит коряво (размер — 8-12px, шрифты проверял Arial и Calibri).
Вероятно, при наложении текста не используется сглаживание. Соответствующих настроек у phpThumb/modPhpThumb нет.

Шрифт используется не системный, а непосредственно указываемый (параметр «f» фильтра «wmt»)
Посоветуйте, как получить сглаженный текст на изображении?

P.S. Да и вообще, не понимаю, как сглаживать текст в php средствами gd и imageMagick…
Есть 2 функции/метода:

ImageTTFtext() — параметров, отвечающих за сглаживание, нет
Imagick::annotateImage() — параметров, отвечающих за сглаживание, нет
10 комментариев
Tramp13571
Tramp1357 09 октября 2015г в 22:33 #
Для вывода одинакового для всех картинок текста можно просто накладывать png с подготовленным как надо текстом.
Просто я не вижу необходимости динамически внедрять в картинку текст. Подписать можно и в слое, наложенном на картинку средствами html/css.
c
cyrax_02 09 октября 2015г в 22:45 #
Для вывода одинакового для всех картинок текста можно просто накладывать png с подготовленным как надо текстом.
Текст индивидуален для каждой картинки. И должен присутствовать непосредственно на картинке, т.к. содержит информацию об авторских правах, комментарий и пр. (без комментария, к примеру, будет непонятно или не совсем понятно, что там изображено и где оно находится).

Просто я не вижу необходимости динамически внедрять в картинку текст. Подписать можно и в слое, наложенном на картинку средствами html/css.
После скачивания картинок с сайта эту информацию (текст) пользователь не увидит. Со всеми вытекающими…

P.S.
1) Запрограммировать можно любой — сколь угодно сложный — функционал
2) Чем сложнее функционал, реализованный на твоём сайте, тем меньше реальных и потенциальных конкурентов
Tramp13571
Tramp1357 10 октября 2015г в 00:58 #
2) Чем сложнее функционал, реализованный на твоём сайте, тем меньше реальных и потенциальных конкурентов
Возможно. Спорить не буду. Знаю только, что при желании можно и watermark почистить. Да, долго и нудно, но можно.

P.S.: как вариант — habrahabr.ru/post/43744/
c
cyrax_02 10 октября 2015г в 12:55 #
Знаю только, что при желании можно и watermark почистить
Что вы имеете ввиду под «почистить»? Вручную реализовать сглаживание?

P.S.: как вариант — habrahabr.ru/post/43744/
В этой статье приведённый класс для наложения текста использует ту же GD-функцию ImageTTFtext(), у которой, как я указал выше, нет параметров сглаживания. И вообще, в статье не упоминается про сглаживание.
Разве что в комментариях упоминается библиотека magickwand. Её вы имели ввиду?
c
cyrax_02 09 октября 2015г в 22:48 #
Информация об авторских правах различается (авторы — разные), комментарии — тоже разные.
И это всё должно присутствовать на самой картинке, как минимум, из соображений защиты авторских прав
Fi1osof1
Fi1osof 10 октября 2015г в 15:25 #
А как тебе такой хак? На стороне сервера средствами JS+canvas фигачить картинки-копирайты, а далее уже их накладывать вотермарками? Просто в тех же браузерах, сглаживание — это дело самих браузеров. Открой один и тот же сайт в разных браузерах, и шрифты будут по разному сглажены там. На сколько я знаю, лучшее сглаживание у сафари, затем IE! (да-да, там классное сглаживание), ну и только потом хромы с огнелисами и т.п.
Как у пыха со сглаживанием дела обстоят, я не в курсе, к сожалению.
c
cyrax_02 10 октября 2015г в 17:55 #
На стороне сервера средствами JS+canvas фигачить картинки-копирайты, а далее уже их накладывать вотермарками?
Ну, пока ещё не так припёрло, чтобы до такого дойти. Хотя вариант — решение (и логику взаимодействия с сервером будет нужно проработать, т.к. при наложении используется информация из БД сервера и эту информацию заранее всю на клиент не загрузишь, т.к. её много).

Проверил в последнем FF (41.0) — текст не очень-то уж и сглаженный получается. Это если (JS+canvas)

P.S. Ну а коли не припёрло, дальше использования готовых библиотек двигаться незачем.
Стоит подождать, пока в новых версиях imagick будет реализовано сглаживание текста. И после выполнить перегенерацию всех изображений. Сервер стерпит…
c
cyrax_02 10 октября 2015г в 17:56 #
Проверил в последнем FF (41.0) — текст не очень-то уж и сглаженный получается. Это если (JS+canvas)
Скорее, совсем не сглаженный
Fi1osof1
Fi1osof 10 октября 2015г в 18:01 #
Ясно. Ну, держи в курсе новых достижений. Тема действительно интересная.
s
shadow 10 октября 2015г в 17:14 #
А вот, по теме, если смотреть на приведенные примеры, то результаты весьма хороши: zinchenko.us/article/php-images-with-text
Очень заинтересовала тема.
В разных СМИ, например Медузе, заглушки для отправки в соц сети очень качественно смотрятся (пример:https://meduza.io/image/share_images/15949.png?). Не вручную же они их делают. Соответственно, нужная штука, на новостных сайтах особенно.
c
cyrax_02 10 октября 2015г в 22:37 #
Оба класса, предложенные по ссылке, никаких дополнительный действий по сглаживанию не выполняют. Оба класса используют тот же самый ImageTTFtext(). И всё.
c
cyrax_02 10 октября 2015г в 22:50 #
Тем не менее, проблема решена. Получил нормальный сглаженный текст.
Согласно справке:
color
Индекс цвета. Использование отрицательных индексов создает эффект выключенного сглаживания. См. imagecolorallocate().
Стало быть, по умолчанию функция должна выполнять сглаживание. Посмотрел в приближении — сглаживание действительно имеется. Но в реальном масштабе шрифт выглядит коряво. Возможно, я слишком привередлив, но корявость действительно имеется.

А причины тому следующие:
1) небольшой размер шрифта (8-12px)
2) Неудачная комбинация протестированных шрифтов и алгоритмов сглаживания, реализованных в ImageMagick

Решение простое — подбор шрифта, наложение текста, визуальная оценка. Таким способом на размерах текста 9-12px от корявости можно полностью избавиться, что я и сделал. На более мелких шрифтах (< 8-9px) некоторая корявость, скорее всего, останется.

Fi1osof1
Fi1osof 10 октября 2015г в 23:00 #
Круть! Респект! :)
Авторизуйтесь или зарегистрируйтесь (можно через соцсети ), чтобы оставлять комментарии.