AppleサポートAppおよびYouTubeチャンネルのお知らせ

* iOS向けAppleサポートAppのバージョン5.6.1が公開されました。

YouTube - Apple Japanチャンネルで有用なヒントや使い方を配信中です。

コミュニティでの投票方法と通知設定

コミュニティでの投票方法や通知の設定方法に関する記事を公開しました。

Apple Account(Apple ID)の不正利用を確認する方法

Apple Accountに関するよくある質問についてはこちらのページを、また不正利用を確認する方法についてはこちらのドキュメントをご参照ください。

写真をDropBox共有するために「写真」の日付のまま書き出したい。

これまで「写真アプリ」で整理してきた写真は、オリジナルファイルの日付が誤っていたため変更しているものが多数あります。これを書き出してDropBoxに移し、複数の(windowsを含む)PCで共有したいのですが、上手く行きません。

オリジナルを書き出すと、これまでの日付の修正が台無しになってしまうからです。

過去、何度もmac写真ライブラリからエクスポート、インポートを繰り返したからです。(何も指定しないと、すべて書き出した日付になってしまう)これを繰り返し合体して、いまのライブラリがあります。

もう、写真アプリ内で整理した日付を保持したまま、他のPCと共有する方法は無いのでしょうか。

環境はiMac mid2011 OS HighSierra 10.13.6 写真ver 3.0

iMac 27″, macOS 10.13

投稿日 2024/10/22 23:30

返信
スレッドに付いたマーク ランキングトップの返信

投稿日 2024/10/23 21:19

綺麗さっぱりなくなってますね...。


写真アプリの「情報」にはご自身で設定した日時が表示されているのですよね?

であれば、こんな感じでどうでしょうか?


  1. 写真アプリでタイトルを設定
  2. 写真アプリから写真を書き出し (ファイル名をタイトルに指定)
  3. 書き出したファイルの EXIF 情報を他社製アプリでセット


1 は下記スクリプトでできます。

3 は EXIF を編集する他社製アプリを使うと良いでしょう (必要ならスクリプトを投稿します)


# スクリプト


作り方

  1. スクリプトエディタを起動し、
  2. ウインドウ左上の方にある言語選択から「JavaScript」を選択
  3. 下記コードをコピペ
  4. 適当な名前を付けて、ファイルフォーマットを「スクリプト」で保存


実行

  1. 写真アプリで写真を選択し
  2. スクリプトを実行 => 写真アプリで選択した項目のタイトルがセットされる


JavaScript のコード

'use strict';

var Photos = Application('Photos');

function date2str(date) {
    const df = $.NSDateFormatter.alloc.init;
    df.locale = $.NSLocale.localeWithLocaleIdentifier('en_US_POSIX');
    df.dateFormat = 'yyyy-MM-dd HH:mm:ss';
    return df.stringFromDate(date).js;
}

function run() {
    for (const i of Photos.selection()) {
        const odate = date2str(i.date());
        const title = i.name();
        if (! title) {
            const fname = $(i.filename()).stringByDeletingPathExtension.js;
            i.name = `${odate} ${fname}`;
        } else {
            if (! /^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/.test(title)) {
                i.name = `${odate} ${title}`;
            }
        }
    }
}


返信: 25
スレッドに付いたマーク ランキングトップの返信

2024/10/23 21:19 Haru831 への返信

綺麗さっぱりなくなってますね...。


写真アプリの「情報」にはご自身で設定した日時が表示されているのですよね?

であれば、こんな感じでどうでしょうか?


  1. 写真アプリでタイトルを設定
  2. 写真アプリから写真を書き出し (ファイル名をタイトルに指定)
  3. 書き出したファイルの EXIF 情報を他社製アプリでセット


1 は下記スクリプトでできます。

3 は EXIF を編集する他社製アプリを使うと良いでしょう (必要ならスクリプトを投稿します)


# スクリプト


作り方

  1. スクリプトエディタを起動し、
  2. ウインドウ左上の方にある言語選択から「JavaScript」を選択
  3. 下記コードをコピペ
  4. 適当な名前を付けて、ファイルフォーマットを「スクリプト」で保存


実行

  1. 写真アプリで写真を選択し
  2. スクリプトを実行 => 写真アプリで選択した項目のタイトルがセットされる


JavaScript のコード

'use strict';

var Photos = Application('Photos');

function date2str(date) {
    const df = $.NSDateFormatter.alloc.init;
    df.locale = $.NSLocale.localeWithLocaleIdentifier('en_US_POSIX');
    df.dateFormat = 'yyyy-MM-dd HH:mm:ss';
    return df.stringFromDate(date).js;
}

function run() {
    for (const i of Photos.selection()) {
        const odate = date2str(i.date());
        const title = i.name();
        if (! title) {
            const fname = $(i.filename()).stringByDeletingPathExtension.js;
            i.name = `${odate} ${fname}`;
        } else {
            if (! /^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/.test(title)) {
                i.name = `${odate} ${title}`;
            }
        }
    }
}


2024/10/26 11:14 Haru831 への返信

アプリについては分からないので自作のスクリプトを紹介しますね。


まず下準備。EXIF 情報をセットするために exiftool コマンドが必要となります。入手は下のリンクから。


ExifTool by Phil Harvey

https://exiftool.sourceforge.net/


版は大きく分けて3種類ありますが、ページ上部にある「Download Version 12.99 (7.1 MB) - Oct. 18, 2024」をダウンロードしてください。(Windows 版の下にある MacOS Package は OS のセキュリティで弾かれてしまうようです...)


ダウンロードが完了したら

  1. デスクトップに新規フォルダ「bin」を作成
  2. Image-ExifTool-12.99.tar.gz をダブルクリックで展開
  3. 展開したフォルダの中にあるファイル「exiftool」とフォルダ「lib」を先ほど作成したフォルダ「bin」にコピー



作業が終わったら教えてください。次に進みます。


2024/10/26 22:17 Haru831 への返信

確認ありがとうございます。


以下はダイアログで選択したフォルダ内にある JPEG ファイルの EXIF 情報とファイルの変更日をセットする AppleScript です。


処理対象のファイルを入れたフォルダは、ローカルな場所 (ネットワーク越しとかクラウド上とかではない場所) に置いといてください。


スクリプトの作り方

  1. スクリプトエディタを起動
  2. 言語選択で AppleScript を選択 (今回は JavaScript でなく AppleScript)
  3. 下記コードをコピペ
  4. 保存


実行

  1. スクリプトエディタから実行し、
  2. ダイアログに従ってフォルダを選択 => フォルダ内の JPEG ファイルに EXIF 情報とファイルの変更日がセットされる


# コード

on run
    set_exif_all_dates(choose folder)
end run

on set_exif_all_dates(dir)
    do shell script "bash -s <<'EOF' - " & dir's POSIX path's quoted form & "
export PATH=\"/usr/local/bin:${PATH}\"

which exiftool >/dev/null 2>&1
(( $? )) && { echo 'exiftool: no such command' >&2; exit 1; }

cd \"${1}\" || exit 1

shopt -s nocaseglob
shopt -s extglob

for f in *.jp?([e])g; do
    if [[ -f \"${f}\" ]]; then
        dt=$(grep -oE '^\\d{4}-\\d{2}-\\d{2} \\d{2}-\\d{2}-\\d{2}' <<< \"${f}\")
        if [[ -n \"${dt}\" ]]; then
            exiftool -q -overwrite_original -alldates=\"${dt}\" -FileModifyDate=\"${dt}\" \"${f}\"
            chmod -x \"${f}\"
            # echo \"${f}\"
        fi
    fi
done
EOF"
end set_exif_all_dates


2024/10/27 11:37 Hiro__S への返信

extool コマンドのオプション (日時の書式) を追加しました。同オプションはなくても大丈夫のようですが一応追加。


なお、このスクリプトは前掲のものと動作は変わらないのでなので、再度実行する必要はありません。今後使用する際は、このアップデート版を使ってください。


on run
    set_exif_all_dates(choose folder)
end run

on set_exif_all_dates(dir)
    do shell script "bash -s <<'EOF' - " & dir's POSIX path's quoted form & "
export PATH=\"/usr/local/bin:${PATH}\"

which exiftool >/dev/null 2>&1
(( $? )) && { echo 'exiftool: no such command' >&2; exit 1; }

cd \"${1}\" || exit 1

shopt -s nocaseglob
shopt -s extglob

for f in *.jp?([e])g; do
    if [[ -f \"${f}\" ]]; then
        dt=$(grep -oE '^\\d{4}-\\d{2}-\\d{2} \\d{2}-\\d{2}-\\d{2}' <<< \"${f}\")
        if [[ -n \"${dt}\" ]]; then
            exiftool -q -overwrite_original -d '%Y-%m-%d %H-%M-%S' -alldates=\"${dt}\" -FileModifyDate=\"${dt}\" \"${f}\"
            chmod -x \"${f}\"
            # echo \"${f}\"
        fi
    fi
done
EOF"
end set_exif_all_dates


2024/10/25 20:00 Haru831 への返信

タイトルがセットされたら、写真アプリからオリジナルを書き出す際に、「ファイル名:タイトルを使用」で書き出すと、ファイル名が「YYYY-MM-DD hh:mm:ss xxx.jpg」で書き出されます。


で、他社製アプリによりファイル名の「YYYY-MM-DD hh:mm:ss」の部分から日時関連の EXIF 情報をセットすれば完成です。


2024/10/23 07:59 Haru831 への返信

Exifが変わっちゃってるとなると、ちょっと厄介ですね。

まずはサードパーティのアプリとかでExifの撮影日時の修正が必要ですが、その辺はどうやってるんでしょう?

私はLightroomを使っているので、カメラの時計の時刻ずれを修正するくらいですけど、Exifの日時変更可能です。


現在、Exifの撮影日時が正確なら、撮影日時にファイル作成日を修正するアプリとかもある様ですが、使った事ないのでその点はご容赦ください。

https://macfan.book.mynavi.jp/article/m137026/


2024/10/23 21:05 Haru831 への返信

>日付が無いみたい


おかしいですね。iphone se 2ndで写したのなら、iphoneで見れば撮影日時は入ってるはずですけどね。普通はそれをmacに移行すればexifに撮影日時は入るのですが。通常はデジタル化時刻とかオリジナル作成時刻のところに撮影日時が入ってるのですが。

macOSがhigh sierraだからおかしいということはないはずです。うちのでみる限りもっと古い4sとかガラ携で撮った写真でもexifは入ってます。ただ色々みてみると、exifのところじゃなくて、TIFFとか他のところに入ってるものもあります。

2024/10/23 06:25 Haru831 への返信

そもそも、Exifに撮影日時が保存されているので、書き出したファイル作成日は無視できるんですけどね。

写真管理のアプリで管理するなら、あまり問題は生じないはずですけど…

Exifが消えちゃってる写真とかもあるのでしょうか?


行うとすれば、

書き出し時にファイル名に撮影日時を付与する(純正写真アプリではできないかも)

Exifから撮影日時を拾ってファイル名に反映させるスクリプトを使ってファイル名を変更する(Automaterあたりで実行可能)

Mac用Automatorユーザガイド - Apple サポート (日本)


あたりを検討してみてください。


2024/10/23 10:53 Haru831 への返信

写真アプリの「日時を調整...」で日時を変更したけど「n枚の未編集のオリジナルを書き出す...」で書き出すと、オリジナルの日時 (変更前) になってしまう。写真アプリで変更した日時で書き出したい、、、ということで合ってますか?

2024/10/23 07:19 D300 への返信

ありがとうございます。

なぜかExifが書き換わっちゃってるんですよね...

Automaterですか。使ったこと無いですが、日付も変えられるんですか?たしか操作をスプリクトに変えてくれるんですよね。

ちょっと勉強が必要な感じですね。

そうか、そういう写真用のアプリもあるかも知れませんね。探して見ます。

本体をDropBoxに置いた後、複数のmac,iPhoneで共有できるかも気にところです。

写真ライブラリは元ファイルの場所を格納しているのでしょうが、他のPCから元ファイルを変更されると???

どうなるんでしょうね。

写真をDropBox共有するために「写真」の日付のまま書き出したい。

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple Account を使ってご参加ください。