Java API для создания Shape из обтравочного контура, встроенного в исходный файл TIF
Вот моя ситуация.
У меня есть сервлет, который обслуживает изображения. Я использовал ImageIO SPI для добавления поддержки записи изображений TGA-16, потому что Java не поддерживает TGA из коробки и невероятно - TGA все еще чрезвычайно распространен в JDA Space Planning Software. Я также использовал Apache Commons Imaging для поддержки изображений TIF. Спасибо @haraldK и @Johan за вашу благодарную помощь.
Проблема, с которой я сталкиваюсь, заключается в добавлении поддержки преобразования исходных изображений TIF в другие форматы при сохранении обтравочного контура. Я искал несколько месяцев и нашел способ сделать это с помощью im4java, но моя проблема в том, что сервлет заменил ImageMagick и все зависимости вместе с PHP-скриптами, которые используют для обслуживания изображений - поэтому я бы не стал идти по этому пути.
Кто-нибудь знает API Java, который можно использовать для чтения XML, встроенного в заголовок TIF, в форму Java, и не использует ImageMagick под прикрытием?
Вот пример XML обтравочного контура, встроенного в заголовок Tiff:
Обтравочный контур:
<?xml version="1.0" encoding="iso-8859-1"?>
<svg width="1753" height="1800">
<g>
<path style="fill:#00000000;stroke:#00000000;stroke-width:0;stroke-antialiasing:false" d="
M 181.459 178.579
V 170.188 180.269 170.188 195.632
Y 170.188 210.994 170.188 1473.63
V 170.554 1491.5 176.721 1500.8
Y 208.469 1548.66 309.381 1683.47
V 331.175 1712.37 358.181 1708.11
Y 385.186 1703.84 1570.59 1559.64
V 1582.38 1559.84 1582.38 1545.63
Y 1582.38 1531.42 1582.38 234.474
V 1583.59 214.93 1574.31 207.599
C 1536.48 177.747 1484.3 147.104 1436.35 125.402
Y 1391.68 105.178 1351.71 93.7894
V 1339.86 90.4736 1321.86 91.8947
C 1315.75 92.377 1190.32 100.732 1024.36 114.142
C 1015.45 114.861 1007.86 121.442 998.722 122.04
C 869.146 130.514 726.84 140.18 595.638 148.72
C 578.398 149.842 551.936 143.832 535.282 144.912
Y 353.926 156.665 207.991 165.316
V 197.568 168.396 197.568 175.737
L 181.459 178.579 Z
"/>
</g>
</svg>
Это встроенный путь отсечения, созданный Photoshop.
1 ответ
Похоже, SVG для меня.
Наиболее известной и надежной библиотекой SVG для Java является Apache Batik. Тем не менее, он имеет довольно большую площадь (множество классов и JAR-файлов).
Посмотрите на SVGSalamander, TinyLine или JFreeSVG, если размер и производительность батика являются проблемой (отказ от ответственности: я никогда не использовал ни одного из них).
Не совсем уверен, как они будут визуализировать SVG и как вы будете применять визуализированный вывод к вашему изображению, но я думаю, что вы могли бы решить это.