首页 > 解决方案 > 如何以编程方式 (Python/JS/C++) 将矢量图形 (SVG) 插入 JPG/TIF 等光栅图像?

问题描述

我需要一种编程方式将剪切路径(另存为 SVG 文件)嵌入到另一个图像,例如 JPG/TIF/PSD。使用 Photoshop 之类的工具,这可以很容易地完成,并且路径将插入到图像 8BIM 配置文件中,但似乎没有办法以编程方式完成。ImageMagick 允许您使用以下命令获取矢量图像:

identify -format "%[8BIM:1999,2998:#1]" test.jpg > test.svg

但似乎不可能进行反向操作并添加矢量图像。任何人都可以建议任何允许此操作的库吗?

标签: pythonimageimagemagickvector-graphicsimage-editing

解决方案


这比我现在想写的代码要多一些,但是应该可以使用以下信息将 8BIM 放入 JPEG 中。

  • JPEG 的解剖结构在此处此处进行了描述。

  • 您可以使用 PIL 或 OpenCV 将 JPEG 编码到内存缓冲区中,然后使用类似这样的代码定位和修改/添加段(例如 8BIM)。或者您可以只read()在您想要修改的现有 JPEG 中。要插入一个段,只需将前几个段写入磁盘,然后写入新的段,然后写入您在开始时读取的现有文件中的剩余段。

  • 您可以使用此答案构建要插入的 8BIM 段。

  • 您可以使用exiftool -v -v -v来查看 8BIM 在 Photoshop 创建的 JPEG 中出现的位置,然后将您的放在类似的位置。显然,您也可以同样使用exiftool来查看您自己的尝试在哪里/如何着陆。


推荐阅读