Существует ли другой формат изображения, похожий на SVG, который можно использовать для сохранения этого масштабируемого изображения без потери разрешения и без возможности непосредственного редактирования конечным клиентом?
SVG - векторный формат, иЧтобы поддерживать максимальную масштабируемость, вам нужно придерживаться векторов, будь то любой формат.Однако в этом случае всегда можно удалить векторы, которые принадлежат вашему водяному знаку.Конечно, существуют векторные форматы, которые хранятся в двоичном формате, что затрудняет синтаксический анализ и редактирование конечным пользователем, но они также не доступны для редактирования в PHP и гораздо менее совместимы.Так что вы, вероятно, не хотите этого делать.
Есть ли способ запутать необработанный контент SVG, чтобы пользователь не мог пойти и манипулировать им?
Во-первых, он никогда не будетбыть «безопасным» в том смысле, что, как сказано выше, всегда будет возможно удалить водяной знак из векторного изображения.(Кстати, единственное отличие от растровых форматов, таких как JPG, заключается в том, что контент под водяным знаком в растровом изображении фактически отсутствует, а в SVG он все еще присутствует.)
Однако, в зависимости от того, насколько «хорошим» вы хотите, чтобы это было,Вы можете сделать несколько вещей.Я думаю, что «доброта» здесь означает усилие, необходимое для удаления водяного знака, и вы можете сравнительно легко поднять планку.Вам не нужно (и вы, вероятно, не можете разумно) запутывать весь SVG.
Одна вещь, которая приходит на ум, заключается в том, что SVG - это в основном просто XML, он состоит из таких тегов, как <rect>
, <line>
, <circle>
и т. Д. Порядок этих тегов не имеет большого значения (в основном, за исключением, конечно).Таким образом, вы можете переплетать теги, которые рисуют ваш водяной знак, практически случайным образом среди существующих тегов.Я имею в виду действительно случайно, поэтому разные загрузки будут давать разные результаты.Если вы сделаете это хорошо (например, вы обнаружите, что теги строк «скрывают» теги строк водяных знаков и т. Д.), автоматически будет трудно удалить водяной знак, потому что это все релевантные данные, которыеваше реальное изображение.Конечно, водяной знак все еще может быть визуально в углу, и это уже слабость, все, что нарисовано в углу, может быть удалено автоматически.И это будет легко удалить вручную с любым приличным редактором, я полагаю.Так что это зависит от того, какова цель.
Но я все еще думаю, что такого рода вещи могут сделать это достаточно сложным во многих сценариях (и будет совершенно неадекватным в других).