如何使用 AppleScript 获取图像的(jpeg、raw)捕获日期时间?

How to get image's (jpeg, raw) capture date time with AppleScript?

到目前为止,我只能得到比拍摄日期晚几秒的图像文件创建日期。如何从 Exif 获取图像的拍摄日期?

tell application "Finder"
    try
        set the source_folder to (folder of the front window) as text
    on error -- no open folder windows

        set the source_folder to (path to desktop folder) as text

    end try
    set these_items to the selection
end tell

set repeatCount to 1
repeat with i from 1 to the count of these_items

    set this_item to (item i of these_items) as alias
    set this_info to info for this_item
    set {file_name, file_ext} to splitExtension from the name of this_info
    set capture_date to (the creation date of this_info)

    set formatted_date to (my dateFormat(capture_date))
    set new_name to formatted_date & file_ext
    -- check to see if it's already there
    tell application "Finder"
        if (exists item (source_folder & new_name)) then
            --- display dialog new_name & " already exists."
            set new_name to formatted_date & "_" & repeatCount & file_ext
            set name of this_item to new_name
            set repeatCount to 1 + repeatCount
        else
            set name of this_item to new_name
        end if
    end tell
end repeat

您可以借助 AppleScriptObjC 和 AppKit 获取 EXIF 数据。

结果是包含数据的 Applescript 记录,捕获日期可能是键 DateTimeDigitized 的值,它是一个字符串。

use AppleScript version "2.4" -- Yosemite (10.10) or later
use scripting additions
use framework "AppKit"

set theFile to (choose file)

set imageRep to current application's NSBitmapImageRep's imageRepWithContentsOfFile:(POSIX path of theFile)
set exifData to imageRep's valueForProperty:(current application's NSImageEXIFData)
if exifData is missing value then
    display dialog "No EXIF data found" buttons "Cancel" default button 1
else
    set exifData to exifData as record
    set captureDate to DateTimeDigitized of exifData
end if