我有一个图像列表,我运行mini_exiftool
从图像中提取各种属性(EXIF & IPTC)。我已经成功创建了一个LiquidTag。它接受路径和我想要的EXIF属性,并返回(我认为是)字符串。Jekyll - 访问液体的插件对象
但是,mini_exiftool
是慢。目前我每个图像多次插入标签。我想每个图像运行一次,并将所有数据(数组?对象?)存储在一个变量中。小小的免责声明 - 除了我学会了解这个问题之外,我几乎不知道任何Ruby。
这是我如何使用插件:
{% exif path, title %}
{% exif path, lens %}
这是插件,猜测和代码的大杂烩网上找到:
require 'mini_exiftool'
module Jekyll
class Exif < Liquid::Tag
def initialize(tag_name, params, token)
super
args = params.split(",").map(&:strip)
@filename = args[0]
@property = args[1]
end
def lookup(context, name)
lookup = context
name.split(".").each { |value| lookup = lookup[value] }
lookup
end
def render(context)
path = lookup(context, @filename)
exif = MiniExiftool.new(path)
return exif[@property]
end
end
end
Liquid::Template.register_tag('exif', Jekyll::Exif)
感谢您的回复!我会阅读发电机,我认为这可能会解决我的问题。我更新了我的问题,这个问题有点不清楚,你在大多数账户上都猜到了。 ;-) – Henrik
很高兴听到Henrik。如果您对Jekyll有更深的兴趣,我现在做一些无耻的自我推广,并将这个链接提供给我正在编写的书籍项目(当我有时间时:-)):https://www.jekyll.io – Christian
由于我已经使用shell脚本来处理文件,因此我可以在exiftool中添加一个额外的调用并将其输出到JSON数据文件。如果我在jekyll运行时需要数据,我会用一个发生器去掉。现在我拥有了所有的数据和零开销。干杯! – Henrik