【发布时间】:2017-04-10 16:11:06
【问题描述】:
我有一个图像列表,我在上面运行mini_exiftool 以从图像中提取各种属性(EXIF 和 IPTC)。我已经成功创建了一个 LiquidTag。它接受我想要的 path 和 EXIF 属性,并将其作为(我假设是)字符串返回。
但是,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)
【问题讨论】: