python - 如何以编程方式 (Python/JS/C++) 将矢量图形 (SVG) 插入 JPG/TIF 等光栅图像?
问题描述
我需要一种编程方式将剪切路径(另存为 SVG 文件)嵌入到另一个图像,例如 JPG/TIF/PSD。使用 Photoshop 之类的工具,这可以很容易地完成,并且路径将插入到图像 8BIM 配置文件中,但似乎没有办法以编程方式完成。ImageMagick 允许您使用以下命令获取矢量图像:
identify -format "%[8BIM:1999,2998:#1]" test.jpg > test.svg
但似乎不可能进行反向操作并添加矢量图像。任何人都可以建议任何允许此操作的库吗?
解决方案
这比我现在想写的代码要多一些,但是应该可以使用以下信息将 8BIM 放入 JPEG 中。
您可以使用 PIL 或 OpenCV 将 JPEG 编码到内存缓冲区中,然后使用类似这样的代码定位和修改/添加段(例如 8BIM)。或者您可以只
read()
在您想要修改的现有 JPEG 中。要插入一个段,只需将前几个段写入磁盘,然后写入新的段,然后写入您在开始时读取的现有文件中的剩余段。您可以使用此答案构建要插入的 8BIM 段。
您可以使用
exiftool -v -v -v
来查看 8BIM 在 Photoshop 创建的 JPEG 中出现的位置,然后将您的放在类似的位置。显然,您也可以同样使用exiftool
来查看您自己的尝试在哪里/如何着陆。
推荐阅读
- java - Spring Security 标头过滤器和状态码响应
- mysql - Mysql存储过程创建与TRANSACTION问题
- bash - Ubuntu上的Git钩子坏了
- r - 有没有办法根据来自多个数据帧的操作在 R 中创建新列?
- vb.net - 如何将 14 位字母数字 VDI 编号转换为唯一的 8 位字符串或整数
- javascript - 尝试使用 React.createRef() 但出现错误:TypeError: Cannot read property 'focus' of null
- android - 如何在sqlite表和android中获取特定的行项?
- bash - 为什么我在修改 .bash_profile 以在 macOS Catalina 上安装 Tensorflow + OpenCV 时出现这些语法错误?
- c# - 为什么这个脚本可以在没有实例化的情况下访问另一个脚本?
- cmake - pkg_check_modules 无法解析,因为依赖项没有 .pc 文件