自动打印带有添加标题的图像

自动打印带有添加标题的图像

我有很多扫描图像和图像/照片,我正在处理多个版本。当我打印它们(使用各种程序)时,我得到的只是图像,而且通常很难分辨哪个图像来自哪个文件。当我有一张照片并想要另一份副本却找不到时,这对我的 (27K) 照片尤其令人沮丧。 (这些照片位于 KPhotoAlbum 中,因此我可以找到我实际上正确标记的少数照片。)

我想要的是一个实用程序,它可以打印一堆图像(例如 doit *.jpg),并包含一个自动(程序生成)标题(希望可配置),其中包含文件的完整路径之类的内容。如果 gnome-photo-printer 可以选择使用它们打印图像的完整路径,那么它将是完美的。

我在项目进行过程中和事后清理时需要这个。这不适用于“最终”图像。

如果我还可以指定图像的打印尺寸,那就太酷了(而且经济),因为通常,较小的“缩略图”图像可能足以组织/清理,并且它们会节省大量时间、纸张和墨水/碳粉。

我知道我可以在 LO writer 之类的工具中手动创建一个嵌入图片的文档,但这完全是手动的(至少以我的专业水平而言),因此非常慢。

将标题放在图片“外部”会特别好,这样它就不会干扰内容,这样我就可以控制背景和字体颜色以提高可读性。


我(原则上)弄清楚了如何在bash中使用convert几次以及composite(均来自ImageMagick)来构建类似的东西,但它相当复杂,我希望有更简单的东西。

答案1

你可能会看看 feh (http://feh.finalrewind.org/),它有一个 --caption-path 选项:

   --caption-path PATH
        Path to directory containing image captions. This turns on caption
        viewing, and if captions are found in PATH, which is  relative  to
        the  directory  of each image, they are overlayed on the displayed
        image.  e.g  with  caption  path  "captions",  and  viewing  image
        images/foo.jpg,   caption  will  be  looked  for  as  "images/cap-
        tions/foo.jpg.txt"

您甚至可以在查看图像时编辑标题:

   c, C Caption entry mode. If --caption-path  has  been  specified,  then
        this  enables caption editing. The caption will turn yellow and be
        editable, hit enter to confirm and save the caption, or hit escape
        to cancel and revert the caption.

不幸的是,您无法选择标题的颜色、位置或大小,因此它的用途有限。

编辑:我的评论是关于 feh 1.3.4。最新版本有附加的字幕选项。

添加对我自己的问题的参考:类似 xv 的图像查看器可以让我注释/标记图像?

答案2

也许您可以使用以下命令作为起点

find -name "test.png" -exec mogrify -draw "text 0,0 '$(pwd)/{}'" -gravity SouthWest "{}" \;

它首先搜索特定文件(此处为 test.png),然后执行 mogrify(ImageMagick 的一部分)命令将文本放入其中。这会将文本放置在图像的左下角。您也可以将其放在图之外,但也许有人可以给出提示来查明这一点。

您还可以将输出放在identify图片内部,那么您应该执行以下操作:

find -name "test.png" -exec bash -c 'mogrify -draw "text 0,0 \"$0$(identify $1)\"" -gravity SouthWest $1' $(pwd) "{}" \;

-exec执行的地方bash,也带有参数。

编辑

重新阅读您的帖子后,我发现我只回答了您的部分问题。循环文件并循环执行某些命令有什么问题?就像是

for picture in $(find -name "*.jpg")
do
    label=$(identify $picture)
    mogrify ... $label ..
    print $picture
done

答案3

一个好的方法是使用某种标记语言生成文档,其中包括作为外部文件的图像并包含标题。

HTML 是一种简单的标记语言。缺点是,可能很难按照您喜欢的方式打印:HTML 是为在网络浏览器中灵活显示而设计的,而不是为了美观的打印而设计的。下面是一个概念验证 shell 脚本,用于生成包含图片及其描述的 HTML 文件。

#!/bin/bash
cat <<'EOF'
<html>
<head><title>My pictures</title></head>
<body>
EOF
for file_name; do
  file_name=${file_name//\&/'&amp;'}
  file_name=${file_name//\"/'&quot;'}
  file_name=${file_name//\</'&lt;'}
  file_name=${file_name//\>/'&gt;'}
  echo "<p><img src=\"$file_name\"><br>$file_name"
done
cat <<'EOF'
</body>
</html>
EOF

您可能想要解析 EXIF 元数据并打印有趣的信息,例如日期和位置(如果存在)。我们有一些现有的线程,您可以参考程序建议、代码示例和灵感:使用 exiv2 打印特定的 Exif 图像数据值,如何根据 EXIF 数据重命名照片?,Shell脚本通过jpg文件属性过滤

如果您想要更好地控制打印文档的外观,您可以生成 LaTeX 源。 LaTeX 可以让您轻松制作精美的文档,但前提是需要经过初始学习阶段。这图片库套装专为简单的画廊布置而设计;有关如何指定要包含的图片的信息,请参阅示例文件。要以简单的方式生成 PDF,请将image-gallery.cls文件和您的my-gallery.tex文件放入当前目录(以及.txt包含图像列表的文件)并运行pdflatex my-gallery.

相关内容