#php #image-processing #imagemagick #image-manipulation #gd
#php #обработка изображений #imagemagick #gd
Вопрос:
Вы знаете, можно ли создать подобный эффект тиснения с помощью программного пакета. Кто-нибудь может что-нибудь предложить
Ответ №1:
Обычно простые эффекты, подобные этому, реализуются с использованием ядра свертки, где изображение преобразуется из исходного кода в новую копию. Каждый новый пиксель вычисляется как линейная комбинация (т. Е. взвешенная сумма) исходного пикселя и подмножества его соседей в исходном изображении.
В качестве примера вы могли бы (абстрактно) определить ядро, такое как:
0 0 0
0 9 -3
0 -3 -3
Здесь центр матрицы представляет взвешивание, применяемое к соответствующему исходному пикселю для каждого нового значения пикселя, подлежащего вычислению. Окружающие значения представляют взвешивание, которое должно быть применено к соответствующим соседним пикселям перед суммированием для вычисления общего значения нового пикселя.
На практике это может быть применено для создания нового рельефного изображения со следующим псевдокодом:
for y in source.height:
for x in source.width:
newImage[x,y] = source[x,y]*9
source[x 1,y]*-3
source[x,y 1]*-3
source[x 1,y 1]*-3
Не учтены очевидные детали реализации, такие как способ обработки края изображения (один из вариантов — предположить, что изображение зеркально отражено по краям), а также фактическое применение произвольной матрицы коэффициентов вместо жесткого кодирования взвешенной суммы, как указано выше. Надеюсь, это, по крайней мере, показывает, насколько проста операция на самом деле по своей сути.
Комментарии:
1. Это приведет к тиснению всего изображения, а не только текста.
2. Я предполагаю, что он ссылается только на текстовую часть, как если бы она была сгенерирована как отдельное изображение, а затем наложена на фон. В противном случае было бы чрезвычайно и излишне сложно выполнить такую операцию. В этом случае изображение рельефного текста может быть сгенерировано, а затем применено к источнику в виде рельефной карты, но пока вопрос не прояснен, я оставлю свой ответ как есть.
Ответ №2:
С помощью GD:
- создайте новое прозрачное изображение размером с исходное — imagecreatetruecolor()
- нарисуйте текст на этом изображении — imagettftext() / imagettfbbox() — подсказка:
IMG_COLOR_TRANSPARENT
- примените
IMG_FILTER_EMBOSS
фильтр — imagefilter() - скопируйте рельефный текст поверх исходного изображения — imagecopymerge()
Ответ №3:
Это может помочь:http://www.imagemagick.org/Usage/fonts /
Ответ №4:
Похоже, теги разобрались с этим за вас… Похоже, это то, что подходит для ImageMagick.
Посмотрите здесь несколько хороших примеров водяных знаков PHP ImageMagick.
Комментарии:
1. Тьфу, да. Извините. Отредактировано, чтобы удалить это.