Как заполнить текст изображением

То, что вы, вероятно, ищете, называется TCP Hole Punching .

Вы можете сделать это, когда у вас нет никакого контроля над NAT-маршрутизатором (даже при переадресации портов )при условии, что вы используете стороннего брокера для синхронизации связи, а ваш NAT является простым NAT, не "Carrier Grade NAT", в т.ч. при этом не меняя видимые порты, только IP (все становится сложнее еще ). Брокером может быть что угодно, даже настоящий телефонный звонок, но, конечно, для автоматизации потребуется что-то особенное. Роль брокера состоит в том, чтобы синхронизировать действия, а также сообщать обоим узлам их общедоступные IP-адреса. Сервер STUN может быть частью автоматического решения.

Основной принцип заключается в том, что TCP, первоначально определенный в RFC 793 , допускает обычную тройную проверку SYN, SYN/ACK, ACK, или также для одновременного выполнения SYN+SYN, одновременный SYN+ACK и ACK (см. предыдущая ссылка , рисунок 8 ). При этом оба маршрутизатора NAT откроют «обратный поток» TCP-соединения.

Предупреждение :Связь должна быть синхронизирована (, возможно, с NTP ), иначе RST будет отправлен маршрутизатором NAT более медленного узла и может закрыть "дыру" на другом маршрутизаторе NAT. Это не проблема, если маршрутизатор отбрасывает пакеты вместо отправки RST.Многие домашние NAT-маршрутизаторы просто отбрасывают эти пакеты, поэтому проблем не возникает.

Итак, пример, который нужно сделать :Владелец 198.51.100.27 A звонит владельцу B 203.0.113.11, и они соглашаются, что в определенный момент времени, после проверки их IP-адресов с помощью онлайн-сайтов («Что это мой IP"... )и используя традиционную версию netcat,

А наберет:

nc -p 7777 203.0.113.11 8888

B будет одновременно печатать:

nc -p 8888 198.51.100.27 7777

Что произойдет, так это то, что каждый пользователь увидит одно установленное TCP-соединение, одно и то же соединение.

A теперь может напечатать «hello world», которое будет прочитано B.

На самом деле я сделал аналогичный ответ на stackoverflow, возможно, с более подробной информацией, но он никогда не проверялся как решение:https://stackoverflow.com/questions/39545461/tcp-based-hole-punching/39581596#39581596

Вместо использования netcat следует предпочесть socat , поскольку его легче интегрировать с чем-либо еще для автоматизации.

0
12.02.2020, 01:00
1 ответ

С некоторыми битами, заимствованными из ответа здесь и документов imagemagick...

Создание примера текста -фона и изображения -фона (подойдет любое изображение, здесь используются сплошные цвета в качестве доказательства концепции):

convert -size 500x100 xc:dodgerblue -gravity center -background gold -extent 500x300 text_bg.png
convert -size 500x300 xc:red image_bg.png

text_bgimage_bg

Создание текстовой маски (черный текст на прозрачном фоне):

convert -background none -font /usr/share/fonts/TTF/TerminusTTF-Bold.ttf -pointsize 60\
-fill black label:'Test Mask Text' -rotate 25 -gravity center -extent 500x300 text.png

text.png

А теперь составим три:

convert image_bg.png text_bg.png text.png -composite comp.png

comp.png

2
28.04.2021, 23:23

Теги

Похожие вопросы