iCloudに写真をアップロードしようとして「このファイルのサイズが不正です」と表示されたときの原因と対処法を解説します。
iCloudに写真をアップロードしようとしたとき、「このファイルのサイズが不正です」や「The dimensions of this file is invalid」と表示され、困ったことはありませんか?僕も昔のiPhoneで撮った写真をアップロードしていて、この問題に遭遇しました。
実はこれ、画像自体に問題があるのではなく、Exifという隠れた情報の中のサイズデータが欠けていることが原因です。
この記事では、PythonとExifToolを使ってそのExif情報を正しく修正する方法を紹介します。
この方法を使えば、複数の画像でも一括で修正でき、iCloudにスムーズにアップロードできる状態に整えることができます。
iCloud 写真に JPEG画像をアップロードしようとしたら、
「このファイルサイズは無効です」または「The dimensions of this file is invalid」
というエラーが出て、アップロードできないことがあります。
画像の実際のサイズは正常でも、Exifメタデータの中にある ExifImageWidth や ExifImageHeight が 0 のままになっていると、iCloudがその画像を「不正な画像」と判断してアップロードを拒否します。
以下のPythonスクリプトを使えば、Exifサイズが未設定のJPEG画像を一括で修正できます。
了解です!以下は「必要なもの」のセクションを、インストール確認 → なければインストール方法を案内という形に書き換えたバージョンです👇
Exif情報を修正するには、以下のツールが必要です。まずはそれぞれがインストールされているかを確認しましょう。
ターミナル(またはコマンドプロンプト)で以下を実行してください。
python3 --version
Python 3.12.4 のように表示されればOKです。
command not found などと表示された場合は、Python公式サイトからインストールしてください。
ターミナル(またはコマンドプロンプト)で以下を実行してください。
exiftool -ver
12.76 のようにバージョン番号が表示されればOKです。
command not found などと表示された場合は以下の手順でインストールしてください。
brew install exiftool
ExifTool公式サイト から Windows版をダウンロードし、展開後 exiftool(-k).exe を exiftool.exe にリネームして使うようです。
僕はMacなので試していませんが、詳しくは「Installing ExifTool」をご覧ください。
以下を実行してインストールします。
pip3 install Pillow
これで準備が整いました。
続いて、Pythonスクリプトを使ってExif情報を修正していきましょう。
画像が入っているディレクトリに、テキストエディタで以下のコードをコピペして fix_exif_dimensions.py というファイルを作成します。
import os
import subprocess
from PIL import Image
import json
target_dir = "./images"
extensions = (".jpg", ".jpeg", ".JPG", ".JPEG")
for filename in os.listdir(target_dir):
if filename.endswith(extensions):
filepath = os.path.join(target_dir, filename)
try:
with Image.open(filepath) as img:
actual_width, actual_height = img.size
result = subprocess.run(
["exiftool", "-j", "-ExifImageWidth", "-ExifImageHeight", filepath],
stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True
)
exif_data = json.loads(result.stdout)[0]
exif_width = exif_data.get("ExifImageWidth")
exif_height = exif_data.get("ExifImageHeight")
if exif_width == actual_width and exif_height == actual_height:
print(f"⏩ スキップ: {filename}(Exifは正しく設定済み)")
continue
subprocess.run([
"exiftool",
f"-ExifImageWidth={actual_width}",
f"-ExifImageHeight={actual_height}",
"-overwrite_original",
filepath
], check=True)
print(f"✔ 修正完了: {filename}({actual_width}x{actual_height})")
except Exception as e:
print(f"⚠ エラー: {filename} - {e}")
今作成した「fix_exif_dimensions.py」と同じ場所に「 images 」フォルダを作り、テスト用に画像をコピーして数枚入れます。
その後、ターミナルで以下のように実行します。
python3 fix_exif_dimensions.py
すると、ターミナルに以下のように表示されます。Exif情報がおかしいものは修正し、Exif情報が正しいものはスキップするようになっています。
修正された images ディレクトリの中の画像を iCloud にアップロードしてみましょう。
Exifサイズが正しく設定されれば、iCloud 写真に正常にアップロードできるようになります。
写真を開いてみると縦長の画像なのに、Exif情報では横幅の方が長いということがあります。
これは、Exif情報では写真を常に横長の情報として保存していて、「 Orientation 」という項目でどのように回転させるかの情報を保持しています。
なので、Exif情報の横幅と高さの関係は、常に横長になっていて問題ないようです。