Image was too large
添付した画像1枚が上限を超えた状態。写真が主因で、解像度を下げるのが効く。
エラー文字列
Image was too large
何が起きているか
添付した画像1枚が、単体で上限を超えています。
⚠️ リクエスト全体の上限(32MB)とは別の制限です。 「他に何も添付していないのに出た」なら、その1枚が大きすぎます。
何が容量を決めているか(実測)
⚠️ 「スクリーンショットは重い」という思い込みは、半分は誤りです。 実際に測ると、内容によって桁が変わります。
同じ寸法の画像を種類別に保存して比較した結果です。
| 画像の内容 | 寸法 | PNG | JPEG |
|---|---|---|---|
| ダークなコードエディタ | 3840×2160 | 0.54 MB | 1.45 MB |
| 明るいUI(グラデーション+文字) | 3840×2160 | 0.47 MB | 0.58 MB |
| 写真 | 1920×1080 | 2.52 MB | 0.76 MB |
⭐ UIやコードのスクリーンショットは、4K でも 0.5MB 程度にしかなりません。 PNG は「同じ色が続く領域」を強く圧縮するため、平坦な画面ほど小さくなります。
このエラーに当たるのは、次のどれかです。
| 状況 | 目安 |
|---|---|
| 写真を添付した | スマートフォンの写真は 3〜8MB |
| 写真や動画が写り込んだ画面 | ブラウザで画像を開いた状態のスクリーンショットなど |
| 良かれと思って JPEG に変換した | ⚠️ スクリーンショットでは逆に大きくなります(下記) |
| 極端に大きな寸法 | 縦長ページの全体キャプチャなど |
直し方
1. まず解像度を下げる(最も効く)
⭐ 画質を落とすより、解像度を下げるほうが効果が大きく、読み取り精度も落ちません。
コードやUIのスクリーンショットなら、横 1600px 程度で文字は十分読めます。
Windows(PowerShell・標準機能のみ。追加インストール不要)
Add-Type -AssemblyName System.Drawing
$in = "C:\path\to\shot.png"
$out = "C:\path\to\shot-small.jpg"
$src = [System.Drawing.Image]::FromFile($in)
$w = 1600
$h = [int]($src.Height * $w / $src.Width)
$dst = New-Object System.Drawing.Bitmap($w, $h)
$g = [System.Drawing.Graphics]::FromImage($dst)
$g.InterpolationMode = 'HighQualityBicubic'
$g.DrawImage($src, 0, 0, $w, $h)
$dst.Save($out, [System.Drawing.Imaging.ImageFormat]::Jpeg)
$g.Dispose(); $dst.Dispose(); $src.Dispose()
"{0:N2} MB -> {1:N2} MB" -f ((Get-Item $in).Length/1MB), ((Get-Item $out).Length/1MB)
macOS(標準の sips。追加インストール不要)
sips -Z 1600 shot.png --out shot-small.jpg
ls -lh shot.png shot-small.jpg
Linux(ImageMagick)
convert shot.png -resize 1600x -quality 80 shot-small.jpg
2. 必要な範囲だけを撮る
そもそも全画面を渡す必要はほとんどありません。
| OS | 範囲指定のスクリーンショット |
|---|---|
| Windows | Win + Shift + S(切り取り&スケッチ) |
| macOS | Cmd + Shift + 4 |
⭐ 範囲を絞ると、容量が減るだけでなく回答の精度も上がります。 見てほしい箇所が明確になるためです。
3. ⚠️ スクリーンショットを JPEG に変換しないこと
よく言われる「JPEG にすれば軽くなる」は、スクリーンショットには当てはまりません。 実測すると逆でした。
| 内容 | PNG | JPEG | 比 |
|---|---|---|---|
| ダークなコードエディタ 4K | 0.54 MB | 1.45 MB | JPEG が 2.7倍 |
| 明るいUI 4K | 0.47 MB | 0.58 MB | JPEG が 1.2倍 |
| 写真 FHD | 2.52 MB | 0.76 MB | PNG が 3.3倍 |
⭐ 理由は圧縮方式の違いです。 PNG は同じ色の連続を縮めるので、単色背景と文字でできた画面に強い。JPEG は滑らかな階調に強く、文字の輪郭のような急な変化はむしろ苦手です。
使い分けはこうなります。
| 渡すもの | 形式 |
|---|---|
| 未加工のスクリーンショット | PNG のまま。変換しない |
| 縮小したスクリーンショット | JPEG(理由は下記) |
| 写真、写真を含む画面 | JPEG |
| 透過が必要な図 | PNG |
4. 縮小したあとは JPEG にする
⚠️ 縮小すると PNG の利点が消えます。 拡大縮小の処理で中間色が大量に生まれ、「同じ色の連続」が無くなるためです。
実測では、縮小したのに PNG のほうが元より大きくなりました。
| 状態 | PNG | JPEG |
|---|---|---|
| 元(4K・ダークなエディタ) | 0.54 MB | 1.45 MB |
| 1600px へ縮小 | 0.98 MB(← 元より増えた) | 0.31 MB |
⭐ 縮小するなら JPEG で保存する。縮小しないなら PNG のまま。 手順1のスニペットが JPEG で保存しているのは、この理由によります。
5. そもそも画像で渡す必要があるか
| 渡したいもの | より良い渡し方 |
|---|---|
| エラーメッセージ | 文字列をコピーして貼る。 画像より正確で軽い |
| コード | ファイルとして渡すか、コードブロックで貼る |
| ターミナルの出力 | テキストをコピーする |
| ログ | ファイルに保存してパスを渡す |
| UIの見た目・レイアウト崩れ | 画像が適切 |
| 図・グラフ | 画像が適切 |
⭐ エラーメッセージのスクリーンショットは、この辞典の趣旨から言っても損です。 文字列で渡せば、そのまま検索もできます。
6. 大きさを事前に確認する
Windows(PowerShell)
Get-ChildItem "$env:USERPROFILE\Pictures\Screenshots" |
Sort-Object Length -Descending |
Select-Object -First 5 Name, @{n='MB';e={[math]::Round($_.Length/1MB,2)}}
macOS / Linux
ls -lhS ~/Desktop/*.png | head -5
7. 似たエラーとの区別
| 表示 | 対象 |
|---|---|
Image was too large |
画像1枚 |
Unable to resize image |
自動縮小に失敗。手動で縮小してから渡す |
Request too large for the API's 32MB request limit |
リクエスト全体 |
PDF too large |
PDF 1件 |
再発防止
- ⭐ 範囲指定でスクリーンショットを撮る習慣をつける。 容量・精度・手間のすべてが改善します
- エラー文言は画像ではなく文字列で渡す
- ⚠️ スクリーンショットを「軽くするため」に JPEG へ変換しない。 実測では逆に重くなります。縮小した場合だけ JPEG にしてください
- 高DPI環境では、見た目のサイズとピクセル数が一致しません。「小さく見えるのに重い」ことがあります
- よく使う縮小コマンドを関数やスニペットにしておくと、毎回考えずに済みます