iCloud写真にアップロードできない?「このファイルのサイズが不正です」の対処法
目次
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データの「画像サイズ」が0になっている
画像の実際のサイズは正常でも、Exifメタデータの中にある ExifImageWidth や ExifImageHeight が 0 のままになっていると、iCloudがその画像を「不正な画像」と判断してアップロードを拒否します。
対処法:Exifデータに正しい画像サイズを設定する
以下のPythonスクリプトを使えば、Exifサイズが未設定のJPEG画像を一括で修正できます。
了解です!以下は「必要なもの」のセクションを、インストール確認 → なければインストール方法を案内という形に書き換えたバージョンです?
必要なツールの確認とインストール
Exif情報を修正するには、以下のツールが必要です。まずはそれぞれがインストールされているかを確認しましょう。
Python 3.x の確認
ターミナル(またはコマンドプロンプト)で以下を実行してください。
python3 --version
Python 3.12.4 のように表示されればOKです。
command not found などと表示された場合は、Python公式サイトからインストールしてください。
ExifTool の確認
ターミナル(またはコマンドプロンプト)で以下を実行してください。
exiftool -ver
12.76 のようにバージョン番号が表示されればOKです。
command not found などと表示された場合は以下の手順でインストールしてください。
macOS の場合(Homebrewを使って)
brew install exiftool
Windows の場合
ExifTool公式サイト から Windows版をダウンロードし、展開後 exiftool(-k).exe を exiftool.exe にリネームして使うようです。
僕はMacなので試していませんが、詳しくは「Installing ExifTool」をご覧ください。
Pillow ライブラリ(Pythonで画像サイズ取得に使用)
以下を実行してインストールします。
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情報の横幅と高さの関係は、常に横長になっていて問題ないようです。