image - 存储带有图例的图像格式
问题描述
我正在尝试将植物及其图例(作为文本)的图像存储在一起。但是我找不到一个直接的方法来做到这一点。
我当然可以使用“高级”文本编辑器(高级,我的意思是格式化,而不仅仅是原始文本),在导出为PDF之前,我将在其中导入图像并编写文本。我还考虑过html,它可用于为每一对图像图例创建一个独立的本地网页。但是,每对仍然有 2 个文件:一个用于图像,一个用于 html 代码。
然而,这些都是相当繁重的过程,如果我可以“简单地”使用更原始的格式,其中图像的数据和文本是某种级联的,我会更加满意,或者......
你知道这种格式吗?如果不是,我最好自己编写代码......提前谢谢你!
解决方案
图像可以是图像加文本的多语言(不建议)
图像可以将文本保存为隐写术(也不可取)
图像可以包含文本元数据,例如 Exif、Jpg 评论、Tiff 标签或 IPTC
您甚至可以将图例条添加到图像的底部,但这不是“文本”。在放置时,您粘贴图像和文本。
HTML 可以将图像保存为 text.base64,但文本图像需要 133% 的存储空间
FB2 的相似之处在于它是带有编码图像的 xml,但其优点是存储为压缩的 FB2Z,因此最接近您的级联要求
PDF 可以原生保存,如果处理得当,开销比 html 少,但比 exif.img 多一点
如果像 PDF/A 一样做得好,图像和文本都可以完美地从 PDF 中提取出来,因此图像可以被丢弃,但是,它们经常被捣碎,超出了纯粹的提取甚至重用。
但在我的情况下,我可以以 100% 的比例提取图像,所以它从这个迷你 PDF 返回这里是文本
Hello, Flowers!
Microsoft Windows Welcome Scan
这是使用跨平台Artifex Mutool将两者存储在一起的代码
mutool create -o "output.pdf" -O ascii "Page1.txt" ["page2.txt" ...]
%%MediaBox 0 0 595 842
%%Font Helv Helvetica Latin
%%Image Flowers1 C:/Users/name/Documents/WelcomeScan.jpg
% Draw an image. x width, H line elevation (y skew), x skew, y height, left offset, bottom offset, units are pt.'s cm is not centimetres
q 512 0.0 0.0 384 41.5 400 cm /Flowers1 Do Q
% Draw a rectangle. move line fill
q 1 0.5 1 rg 41.5 370 m 553.5 370 l 553.5 270 l 41.5 270 l f Q
% Show some text.
q 0 0 1 rg
BT /Helv 24 Tf 210 330 Td (Hello, Flowers!) Tj ET
BT /Helv 24 Tf 100 290 Td (Microsoft Windows Welcome Scan) Tj ET
Q
笔记
- %%MediaBox 是以点为单位的纸张大小,因此高于 = A4 Portrait
- 需要为文本样式(语言)添加 %%Font 以供以后使用
- %%Image 需要内部名称和完整路径以进行预加载注意此图像在 100% 提取时为 1024x768,但将选择以 50% (512x384) 显示
- 以单个 % 开头的行是用于提醒我布局内容的伪 PS 指令的注释。这些块
q ... Q
是页面的核心,并且被大量缩写(在值之后),因此1 0.5 1 rg
在 RGB 中是 50% 的绿色!在工作模板中删除它们,否则它们可能会添加到 PDF 中:-) - 诀窍是了解 PDF 如何按页面工作,并从以媒体框为界的左下角原点放置矢量或缩放图像或文本。Mutool 获取脚本并为有效的 PDF 添加所有必要的开销数据。
以上所有内容都可以很容易地模板化并使用 CMD 或 BASH 运行,就像可以模板化 ePub 然后调用 TAR 将文件夹转换为 folder.epub 一样,但是更复杂的 ePub 结构并不那么容易在脚本中编写,因此建议使用可编写脚本的库。
- ePub 是首选答案,因为 xhtml 和图像以其本机格式压缩,并且可以轻松打印为 PDF 或转换为普通的 HTML + 图像
推荐阅读
- javascript - 无法读取未定义 Puppeteer 的属性“长度”
- ruby-on-rails - 如果用户从支付提供商返回后浏览器会话 cookie 丢失,如何从数据库重新加载 ruby on rails 中的会话
- r - 在 dplyr group_by 中过滤,以便保留符合某些条件的行组合
- python - 函数在 django 中的日期范围之间给出错误的工作日总数
- javascript - 如何快速改变播放音调的频率而不会噼啪作响?
- php - DomPdf 渲染黑白图像
- python - 如何将标记器输出转换为训练器 API 在 Huggingface Transformers 中所需的 train_dataset?
- flutter - 当我关闭我的应用程序时,我的数据库正在重置
- javascript - 动态地将类添加到 React map 函数中的前 n 个元素
- mysql - 我需要通过以下方式加入这两个表..使用mysql