【问题标题】:Create an images slideshow (JPG) with the image duration based on EXIF date delta使用基于 EXIF 日期增量的图像持续时间创建图像幻灯片 (JPG)
【发布时间】:2015-03-22 08:32:56
【问题描述】:

我想创建照片幻灯片,其中每张照片的显示持续时间以某种方式基于它与其后继者之间的 EXIF 日期差异。 这些照片是一个特定场景(比如正在建造的建筑物)的(不定期拍摄)图像,我想创建某种按时间顺序线性化的幻灯片放映。当发生更多可见的事情时,我拍了更多照片,而当什么都没发生时,我拍了更多照片,我想在幻灯片中弥补这一点。

我并不关心结果是 GIF 动画、电影文件还是远程控制图像查看器的 bash 脚本。如果需要一个应用程序,它可以是商业的(但应该是负担得起的)——尽管我当然更喜欢基于 OSS 的解决方案。只有最终结果必须是可移植的(Linux、OS X、Windows)并基于开放数据格式。

我当然可以编写一个脚本,该脚本占用所有照片的最小时间增量,并在必要时复制其他照片,并从结果列表中创建具有固定时间间隔的幻灯片,但我想知道是否有解决方案需要更少的时间工作。

奖励积分奖励

  • 可配置的拉伸因子(每天的秒数等)
  • 对数时间缩放(因此在非常短的时间间隔内拍摄的照片不会仅在 1/100 秒内保持可见)
  • 执行此操作的 iPhoto / Apple 照片导出插件。 ;-)

【问题讨论】:

    标签: image slideshow exif


    【解决方案1】:

    今天下午我感到很无聊,这里有一些东西可以帮助您入门。基本上,它会快速浏览当前目录中的所有 JPG 照片,并提取每张照片的拍摄时间。然后将时间转换为纪元秒,并输出所有照片的名称及其相关时间并按顺序排序:

    #!/bin/bash
    
    # Accept JPG and/or jpg as file extension
    shopt -s nocaseglob
    
    # Go through all photos
    for f in *.jpg; do
    
       # Use jhead to get date and convert that to epoch seconds for easy sorting
       epoch=$(jhead "$f" | awk '/^Date/{s=$3 " " $4;gsub(/:/," ",s);print mktime(s)}')
    
       # Output result
       echo $epoch:$f
    done | sort -n
    

    输出

    1395388852:P3210013.JPG
    1395388894:P3210014.JPG
    1395388908:P3210015.JPG
    1395388917:P3210016.JPG
    1395388941:P3210017.JPG
    1395499771:P3220018.JPG
    

    如果您想制作动画 GIF,您可以像这样使用 ImageMagick(我将使用 homebrew 在 OSX 上安装它):

    convert -delay 400 P5280158.JPG -delay 200 P5280159.JPG -loop 0 anim.gif
    

    这将使动画 GIF 在无限循环 (-loop 0) 中将第一张照片保持 4 秒,将第二张照片保持 2 秒,如下所示:

    【讨论】:

    • 仍在考虑解决方案。但你是一个好的开始。谢谢。 :)
    • 我正在根据您的解决方案编写一个 Ruby 脚本。完成后我会在 Github 上发布。但当然,在此之前它至少应该被称为 v0.1 .. :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-04
    • 1970-01-01
    • 2016-11-06
    • 1970-01-01
    • 2011-08-23
    • 2012-07-12
    相关资源
    最近更新 更多