見出し画像

VRChatのスクショを、タイムトラベルせずにAmazon Photosに保存したい

ちゅうこってタイトル通り、

Amazon Photosは、Prime会員なら容量無制限で保存できるので、そこにVRChatのスクショを溜め込みたい!
でもなぜか日付情報が反映されず、目的の写真がアルバムの渦に埋もれちゃう。。。

それをなんとかしようぜって話です



まず超ざっくり手順

  1. Windowsに「imagemagick」と「exiftool」というアプリをインストール

  2. それらを利用して画像をこねくり回すbatファイルを作成

  3. batファイルを実行すると日付データがついたjpegファイルが生成される

  4. それをアップロード

  5. お掃除して完了

ここで注意なのが、一度画像をjpegファイルに変換しなければならないという事です

pngファイルの場合、画像データに「撮影日時」のメタデータをうまく付与することができず、Amazon Photosにアップロードした際に結局「日付なし」になってしまいます

一応劣化を最大限抑えるようにはしていますが、気になる方は、、、やめといた方がいいかも。。。(もしくは自分でバックアップを持っておくとか)

おけ!じゃあやっていこう!!!


手順!

Windowsに「imagemagick」と「exiftool」というアプリをインストール

これは今のWindowsなら超お手軽にできる方法が存在するので、それに頼りましょう!

Windows 10/11には、wingetというパッケージマネージャーが備わっています
簡単に説明すると、コマンド一つでアプリのインストールやアップデートができちゃう超スゲェやつです

ちゃんとWindows Updateをしていれば既に使えるようになっているはずなので、早速以下のコマンドをpowershellで実行しましょう!

winget install ImageMagick.ImageMagick OliverBetz.ExifTool

これで必要なツールは揃いました!
じゃ次!!!


それらを利用して画像をこねくり回すbatファイルを作成

 じゃまずは適当なbatファイルを作成しましょう

ちゅうことでメモ帳を開いてください

開いたら、以下のコードをまるっとコピペ!

@echo off
setlocal enabledelayedexpansion

rem 'jpg-generated' フォルダが存在しない場合は作成
if not exist "jpg-generated" mkdir "jpg-generated"

rem 現在のディレクトリおよびサブフォルダ内のPNGファイルを処理
FOR /R %%F IN (*.png) DO (
    set "fullpath=%%F"
    rem ファイル名のみを抽出
    for %%A in ("!fullpath!") do set "filename=%%~nxA"

    rem ファイル名から年月日時分秒を抽出
    set "year=!filename:~7,4!"
    set "month=!filename:~12,2!"
    set "day=!filename:~15,2!"
    set "hour=!filename:~18,2!"
    set "minute=!filename:~21,2!"
    set "second=!filename:~24,2!"

    rem EXIFフォーマットに合わせて日付と時間を組み立てる
    set "datetime=!year!:!month!:!day! !hour!:!minute!:!second!"

    rem 組み立てた日付と時間を表示
    echo DateTimeOriginal: !datetime!
    
    rem PNGを高品質のJPGに変換し、'jpg-generated' フォルダに保存
    set "newfilename=!filename:.png=.jpg!"
    magick convert "!fullpath!" -quality 100 "jpg-generated\!newfilename!"

    rem EXIF情報を追加
    exiftool "-DateTimeOriginal=!datetime!" -overwrite_original "jpg-generated\!newfilename!"
)

endlocal
ChatGPTに作ってもらった、便利やねぇ

次にこの状態でキーボードの「ctrl」+「S」を押し、保存します
以下のようなポップアップが出てくるので、

{好きな名前}.bat

ファイル名フォーマット

上記の通りにファイル名をつけて、適当な場所に保存してください

まずはデスクトップなどで動作確認をすることをお勧めしますが、
後に「./Pictures/VRChat」フォルダ内に移動させておくと便利かと思います

(このbatファイルは、そのファイル自体が保存された場所と同じ場所、もしくはそこにあるフォルダの中の画像ファイル全てを処理する仕様になっている為です)

保存できましたら、準備は完了です!
ほな次!!!


batファイルを実行すると日付データがついたjpegファイルが生成される

早速ダブルクリックで実行させてみましょう

すると、このようなウィンドウが表示された後、
batファイルがある場所と同じ場所に「jpg-generated」というフォルダが生成されているはずです

こんな感じのウィンドウが出たら成功

この「jpg-generated」フォルダが、batファイルが処理したjpgファイルの格納場所となり、この中に、Amazon Photosにあげてもオッケーな写真が生成されます

早速アップロードしてみよう!

まず手動でのやり方から

上部のリンクからAmazon Photosのサイトに行き、ログインすると下部同様のページが出現します

あとはこのウィンドウに画像ファイルをドラッグすれば、アップロードが完了します

フォルダごとドラッグしてもオッケー
無事アップロードされた

とここまでは普通ですが、、、
画像の情報を確認してみると。。。

。。。🤯

日付ちゃんと入っとるやないかああぁぁあぁぁぁぁぁぁあいっ!!!!!!!!🤯🌋💥

ということで、無事目標達成〜!🎉

とここで、アップロード、自動化したくない?

そんなあなたは、下記リンクからAmazon Photosのデスクトップアプリをインストールして、設定を済ませましょう(設定方法は割愛)

こんな画面になったら、左上の「バックアップ」タブに行ってください

Amazon Photosデスクトップアプリのホーム画面

するとこのような画面になるので、「バックアップの追加」と書かれた黒いボタンを押します

するとエクスプローラーのウィンドウが出現するので、ここで、「jpg-generated」フォルダを選択し、

設定画面が出現したら、一番下にある
「重複の回避:既にアカウントにある写真やビデオはバックアップしないでください」
という項目にチェックを入れて「保存」を押します

下部のような表示になれば完了です!

お掃除タイム

ところで、今までからAmazon Photosを利用していた方なら、すでに大量の写真が保存されているかと思いますが、できるならそれ、スッキリしたいですよね?

もしも既にデスクトップアプリを利用していて、自動バックアップの設定もしていた
という場合は簡単にまとめて削除ができます

ということでまたまたAmazon Photosのサイトにアクセスします

サイトが表示されたら「フォルダ」タブへ行きます

様々なフォルダが出てくると思いますが、その中から「VRChat」フォルダを探し出し、フォルダを削除すれば、大方スッキリするはずです

注意!
これはもちろん、別の場所に写真のバックアップがある事が前提になります
もしもAmazon Photosにしか写真がないのなら、この操作は行わない事を強くお勧めします

終わり!お疲れ様です!

色々補足

imagemagickって何のアプリ?

今回は「pngからjpgに変換する」という目的で使用しました

主に画像の作成、編集、変換を行うためのソフトウェアで、コマンドラインから操作できて結構多機能って感じです


exiftoolって何のアプリ?

今回は「撮影日時」のメタデータを付与する」という目的で使用しました

主にexifと呼ばれる、写真データに付与されるメタデータの確認、編集などを行うためのソフトウェアです


あのbatファイルの中身ってなんなん?

一応ざっくりと内容と流れだけ説明させていただきます

前提として、VRChatで撮影されたスクリーンショットには命名規則があります
例えば、以下のような命名のスクリーンショットがあった場合、

VRChat_2023-10-28_02-34-01.920_7680x4320.png

命名規則は以下の通りだと読み取れます

VRChat_{年}-{月}-{日}_{時}-{分}-{秒}.{ミリ秒}_{解像度}.png

「ならば、ファイル名から撮影日時を拾ってメタデータとして書き込めばいいのでは?」
という発想になります

その発想を元に以下の通り処理を実施するのが、今回使用したbatファイルです

  1. 「jpg-generated」という名前のフォルダが存在しなければ、新しく作成します

  2. 現在のディレクトリおよびそのサブフォルダ内から、pngファイルを見つけます

  3. 各pngファイルのファイル名を抽出します

  4. ファイル名から特定のパターンを使用して年、月、日、時、分、秒を抽出し、それらをEXIF形式に合わせた日付と時間の文字列に組み立てます

  5. この日付と時間の文字列をターミナルの画面に表示します

  6. ImageMagickのconvertコマンドを使用して、PNGファイルをJPG形式に変換し、そのファイルをjpg-generated フォルダに保存します
    このとき、画質は100%に設定されています

  7. exiftoolを使用して、組み立てた日付と時間の情報を新しく生成したJPGファイルのEXIF情報として追加します


まとめると、

  1. フォルダ作成

  2. pngファイルの名前から日時の情報を抽出、成形

  3. jpgに変換

  4. メタデータ付与

という流れになります


以上!

本当にお疲れ様でした、大事な思い出と共に、良いVRChatライフをお送りください

何かありましたらコメントなりx.comなりでご連絡ください

ほなな〜

いいなと思ったら応援しよう!