画質指定で画像圧縮率を推定
画質指定による画像圧縮では、選択した画質の割合で書き出した場合に、ファイルがどの程度小さくなるかを推定します。JPEG、PNG、WebP、AVIFのいずれかを選び、1から100までの整数を入力してください。同じ形式を画質100で書き出した場合を基準として、相対的な推定サイズと削減率を返します。画像本体、寸法、元のバイト数は必要ありません。そのため、短時間での計画や比較に便利です。ただし、画像内容やエンコーダー設定によって実際の結果は変わるため、信頼度は概算であることを明示しています。
無料で実行
結果は相対的な目安としてお読みください
書き出しに使用する予定の形式を選び、エンコーダーへ渡す画質値を入力してください。結果では、同じ形式を画質100で書き出した状態を基準とし、その相対サイズを100パーセントとして扱います。たとえば相対サイズが63パーセント、推定削減率が37パーセントと表示された場合、低い画質での書き出しは、画質100の版に対しておよそ63パーセントの大きさになるとモデルが見積もったことを意味します。現在お持ちのファイルのバイト数が、そのまま63パーセントになるという意味ではありません。現在のファイルでは、形式、寸法、エンコーダー、メタデータの構成、画質設定が異なる可能性があるためです。基準画質の項目によって、この比較条件を明確にしています。したがって、画質100では推定削減率がゼロになります。1から99までの値には、形式ごとの滑らかな曲線を適用します。この割合は、容量計画や候補比較の目安としてお使いください。既知の画質100のサイズへ掛ける場合は、ほかの書き出し設定も一致していることをご確認ください。
形式ごとに曲線が異なる理由をご確認ください
画質の数値を、そのままバイト数の割合へ置き換えることはできません。JPEG、WebP、AVIFの各エンコーダーは異なる方法で情報を省き、数値上の画質尺度にも互換性がありません。この計算では、それぞれの非可逆形式に別個の非線形曲線と、形式固有の小さなサイズ下限を設定しています。画質を下げたとき、AVIFとWebPではより大きな削減を見込み、JPEGではやや穏やかな曲線を使います。PNGは標準では可逆形式であり、多くのアプリケーションにおける画質に似た設定は、圧縮処理の強さ、パレット削減、または独自の最適化を指定するため、動作が異なります。そのためPNGのモデルは慎重に設定し、下限をかなり高くしています。PNGの画質を下げる操作がJPEGと同じように働くとは見なしません。これらの曲線は、特定のエンコーダーによる実測値ではなく、常に同じ結果を返す計画用の仮定です。同一入力には同一出力が得られるため、画面表示、表計算、テスト、初期の容量計画に利用できます。確定したバイト数が必要な場合は、実際の画素を本番と同じライブラリでエンコードし、生成ファイルを測定してください。
確約ではなく適切な目安としてご利用ください
2項目だけの推定で最も大きく欠けている変数は、画像の複雑さです。単色のロゴ、背景をぼかした人物写真、ノイズの多い風景写真では、形式と画質が同じでもファイルサイズが大きく異なる場合があります。色差サブサンプリング、アルファ透明度、アニメーション、カラープロファイル、メタデータ、エンコーダーの版、速度プリセット、可逆オプションも結果に影響します。表示された削減率は、設定を選ぶための出発点として扱い、アップロードサイズや通信費の保証とはお考えにならないでください。一貫した書き出し工程で複数の画質候補を比較する場合、実測を伴うエンコード処理の初期値を決める場合、または変更によるおおよその方向と規模を説明する場合に有効です。サービスが厳密な最大バイト数を定めている場合は、一度エンコードして実サイズを確認し、範囲を限定した探索で画質を調整してください。また、1から100の範囲外をエラーにすることで、モデルの範囲を越えた意味のない割合が、もっともらしく表示されることを防いでいます。
活用例
Web画像の容量計画を立てる
レスポンシブ画像一式を作成する前に、候補となる画質設定で得られる相対的な削減量を見積もれます。
書き出し設定を比較する
同じ形式で複数の画質を確認し、実測するテストエンコードの妥当な開始値を選べます。
自動エンコーダーの初期値を決める
見込み目標に近い推定値から範囲限定の圧縮探索を始め、手探りの試行を減らせます。
よくある質問
ファイルサイズの基準は何ですか?
同じ画像を同じ形式で画質100として書き出した状態を、相対サイズ100パーセントの基準にしています。
正確なバイト数を予測できますか?
いいえ。画素、寸法、メタデータ、エンコーダー設定を受け取らないため、結果は相対的な概算です。
PNGの削減率が控えめなのはなぜですか?
PNGは通常可逆形式であり、画質に似た設定はJPEGの非可逆画質のようには働かず、圧縮処理の強さやパレット処理を変えることが多いためです。
画質がゼロまたは100を超えるとどうなりますか?
無効な入力としてエラーになります。画質には1から100までの整数を指定してください。
APIリクエストの料金はいくらですか?
APIリクエスト1回の料金は$0.002です。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/image/compress-quality \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"format":"jpeg","quality":75}'const res = await fetch("https://api.kit.forhosting.com/image/compress-quality", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"format": "jpeg",
"quality": 75
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/compress-quality",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"format": "jpeg",
"quality": 75
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/compress-quality", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"format":"jpeg","quality":75}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"format":"jpeg","quality":75}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/compress-quality", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"format": "jpeg",
"quality": 75
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.compress_quality",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_mb | 15 |
max_megapixels | 12 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |