すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:イメージフォーマット変換

最終更新日:Dec 10, 2025

Object Storage Service (OSS) に保存されているイメージのフォーマットは、URL にパラメーターを追加することで変換できます。これにより、イメージをダウンロードする必要がなくなります。このトピックでは、イメージフォーマット変換のパラメーターと例について説明します。

シナリオ

  • さまざまなデバイスやプラットフォームへの適応:デバイスやプラットフォームによってサポートされるイメージフォーマットは異なります。OSS のイメージフォーマット変換機能を使用すると、さまざまなデバイスでの互換性と最適な表示を確保できます。

  • ストレージコストの削減:WebP などの一部のイメージフォーマットは、画質を維持しながらファイルサイズを小さくできます。イメージをこれらのフォーマットに変換することで、ストレージ使用量を削減し、ストレージコストを低減できます。

  • リソース管理の統一:E コマース、ソーシャルメディア、ニュースメディアなどの業界では、アップロードされたイメージを標準フォーマットに変換できます。これにより、その後の管理と配布が簡素化されます。

使用方法に関する注意事項

  • イメージ処理リクエストにサイズ変更操作が含まれる場合、フォーマット変換パラメーターは処理パラメーターの末尾に配置します。例:image/resize,w_100/format,jpg

  • イメージ処理リクエストにサイズ変更操作とウォーターマーク操作の両方が含まれる場合、フォーマット変換パラメーターはサイズ変更パラメーターの後に追加します。例:image/resize,w_100/format,jpg/watermark,...

  • ソースイメージにアルファチャンネルがなく、PNG、WebP、BMP などのアルファチャンネルを持つフォーマットに変換する場合、透明なエリアはデフォルトで白で塗りつぶされます。OSS は透明なエリアを黒で塗りつぶすことをサポートしていないことにご注意ください。

方法

イメージ処理パラメーターは、ファイル URL、SDK、または API を使用して設定できます。ファイル URL は、公開読み取りイメージにのみ使用できます。非公開イメージの場合は、SDK または API を使用する必要があります。詳細については、「イメージ処理メソッド」をご参照ください。

公開読み取りイメージ

公開読み取りイメージの場合、処理パラメーターをイメージ URL に直接追加できます。処理されたイメージは、生成された URL を使用してアクセスできます。

公開読み取りイメージを処理するには、?x-oss-process=image/format,parameter_value パラメーターをイメージ URL に追加します。parameter_value を必要なパラメーターと値に置き換えます。複数のパラメーターを組み合わせることもできます。

ソースイメージ URL

処理パラメーター付きイメージ URL

https://oss-console-img-demo-cn-hangzhou-3az.oss-cn-hangzhou.aliyuncs.com/example.gif

https://oss-console-img-demo-cn-hangzhou-3az.oss-cn-hangzhou.aliyuncs.com/example.gif?x-oss-process=image/format,png

非公開イメージ

非公開イメージのフォーマットは、Alibaba Cloud SDK または REST API を使用して変換できます。

Alibaba Cloud SDK の使用

以下のセクションでは、一般的な SDK を使用してイメージフォーマットを変換する方法を示すコードサンプルを提供します。他の SDK を使用したコードサンプルについては、「SDK の概要」をご参照ください。

Java

Java SDK 3.17.4 以降が必要です。

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.GetObjectRequest;
import java.io.File;

public class Demo {
    public static void main(String[] args) throws Throwable {
        // 中国 (杭州) リージョンのエンドポイントを例として使用します。実際のエンドポイントを指定してください。
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // エンドポイントに対応するリージョン (例:cn-hangzhou) を指定します。
        String region = "cn-hangzhou";
        // 環境変数からアクセス認証情報を取得します。このコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // バケット名 (例:examplebucket) を指定します。
        String bucketName = "examplebucket";
        // オブジェクトの完全なパスを指定します。完全なパスにバケット名を含めることはできません。
        String objectName = "src.gif";
        // ローカルファイルの完全なパス (例:D:\\dest.jpg) を指定します。指定したローカルファイルが存在する場合は上書きされ、存在しない場合は作成されます。
        String pathName = "D:\\dest.png";

        // OSSClient インスタンスを作成します。
        // OSSClient インスタンスが不要になったら、shutdown メソッドを呼び出してリソースを解放します。
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
        OSS ossClient = OSSClientBuilder.create()
                .endpoint(endpoint)
                .credentialsProvider(credentialsProvider)
                .clientConfiguration(clientBuilderConfiguration)
                .region(region)
                .build();

        try {
            // ソースイメージを PNG フォーマットに変換します。
            String image = "image/format,png";
            GetObjectRequest request = new GetObjectRequest(bucketName, objectName);
            request.setProcess(image);
            // 処理されたイメージを dest.png という名前でローカルパスに保存します。
            // ローカルパスなしでファイル名 (例:dest.png) のみを指定した場合、ファイルはデフォルトでプロジェクトの対応するローカルパスに保存されます。
            ossClient.getObject(request, new File("D:\\dest.png"));
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

PHP

PHP SDK 2.7.0 以降が必要です。

<?php
if (is_file(__DIR__ . '/../autoload.php')) {
    require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
    require_once __DIR__ . '/../vendor/autoload.php';
}
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;

// 環境変数からアクセス認証情報を取得します。このコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
$provider = new EnvironmentVariableCredentialsProvider();
// yourEndpoint を、バケットが配置されているリージョンのエンドポイントに設定します。中国 (杭州) リージョンのエンドポイントを例として使用します:https://oss-cn-hangzhou.aliyuncs.com。
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// バケット名 (例:examplebucket) を指定します。
$bucket= "examplebucket";
// オブジェクトの完全なパスを指定します。完全なパスにバケット名を含めることはできません。
$object = "src.gif";
// ローカルファイルの完全なパス (例:D:\\dest.png) を指定します。指定したローカルファイルが存在する場合は上書きされ、存在しない場合は作成されます。
// ローカルパスなしでファイル名 (例:dest.png) のみを指定した場合、ファイルはデフォルトでプロジェクトの対応するローカルパスに保存されます。
$download_file = "D:\\dest.png";

$config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,        
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        // Alibaba Cloud の汎用リージョン ID を指定します。
        "region" => "cn-hangzhou"
    );
$ossClient = new OssClient($config);

// ソースイメージを PNG フォーマットに変換します。
$image = "image/format,png";

$options = array(
    OssClient::OSS_FILE_DOWNLOAD => $download_file,
    OssClient::OSS_PROCESS => $image);

// 処理されたイメージをローカルパスに保存します。
$ossClient->getObject($bucket, $object, $options);                           

Python

Python SDK 2.18.4 以降が必要です。

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

# 環境変数からアクセス認証情報を取得します。このコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# yourEndpoint を、バケットが配置されているリージョンのエンドポイントに設定します。中国 (杭州) リージョンのエンドポイントを例として使用します:https://oss-cn-hangzhou.aliyuncs.com。
## エンドポイントを、バケットが配置されているリージョンのエンドポイントに設定します。中国 (杭州) リージョンのエンドポイントを例として使用します:https://oss-cn-hangzhou.aliyuncs.com。
endpoint = 'https://oss-cn-hangzhou.aliyuncs.com'
# Alibaba Cloud の汎用リージョン ID を指定します。
region = 'cn-hangzhou'
bucket = oss2.Bucket(auth, endpoint, 'examplebucket', region=region)
# ソースイメージの名前を指定します。イメージがバケットのルートディレクトリにない場合は、完全なパス (例:exampledir/src.gif) を指定する必要があります。
key = 'src.gif'
# 処理されたイメージの名前を指定します。
new_pic = 'D:\\dest.png'

# ソースイメージを PNG フォーマットに変換します。
image = 'image/format,png'
bucket.get_object_to_file(key, new_pic, process=image)

Go

Go SDK 3.0.2 以降が必要です。

package main

import (
	"fmt"
	"os"

	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func HandleError(err error) {
	fmt.Println("Error:", err)
	os.Exit(-1)
}

func main() {
	// 環境変数からアクセス認証情報を取得します。このコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// OSSClient インスタンスを作成します。
	// yourEndpoint をバケットのエンドポイントに設定します。中国 (杭州) リージョンのエンドポイントを例として使用します:https://oss-cn-hangzhou.aliyuncs.com。リージョンに基づいてエンドポイントを指定してください。
	client, err := oss.New("https://oss-cn-hangzhou.aliyuncs.com", "", "", oss.SetCredentialsProvider(&provider), oss.AuthVersion(oss.AuthV4), oss.Region("cn-hangzhou"))
	if err != nil {
		HandleError(err)
	}

	// ソースイメージが保存されているバケットの名前 (例:examplebucket) を指定します。
	bucketName := "examplebucket"
	bucket, err := client.Bucket(bucketName)
	if err != nil {
		HandleError(err)
	}

	// ソースイメージの名前を指定します。イメージがバケットのルートディレクトリにない場合は、完全なパス (例:exampledir/src.gif) を指定する必要があります。
	sourceImageName := "src.gif"
	// 処理されたイメージの名前を指定します。
	targetImageName := "D://dest.png"
	// ソースイメージを PNG フォーマットに変換します。
	image := "image/format,png"
	err = bucket.GetObjectToFile(sourceImageName, targetImageName, oss.Process(image))
	if err != nil {
		HandleError(err)
	}
}

REST API の使用

ビジネスで高度なカスタマイズが必要な場合は、RESTful API を直接呼び出すことができます。API を直接呼び出すには、コードに署名計算を含める必要があります。Authorization ヘッダーの計算方法の詳細については、「署名バージョン 4 (推奨)」をご参照ください。

GetObject 呼び出しでフォーマットパラメーターを指定して、イメージを処理できます。詳細については、「GetObject」をご参照ください。

GET /oss.jpg?x-oss-process=image/format,png HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 28 Oct 2022 06:40:10 GMT
Authorization: AuthorizationValue

パラメータ

アクション: フォーマット

有効値

説明

jpg

ソースイメージを JPG フォーマットで保存します。

重要

アルファチャンネルを含む HEIC フォーマットのイメージは、JPG フォーマットに保存できません。

png

ソースイメージを PNG フォーマットで保存します。

webp

ソースイメージを WebP フォーマットで保存します。

bmp

ソースイメージを BMP フォーマットで保存します。

gif

ソースイメージが GIF フォーマットの場合は GIF フォーマットで保存され、それ以外の場合は元のフォーマットで保存されます。

tiff

ソースイメージを TIFF フォーマットで保存します。

heic

ソースイメージを HEIF フォーマットで保存します。

説明

HEIF フォーマットは、中国 (張家口)、中国 (上海)、中国 (深セン)、中国 (杭州)、中国 (北京)、およびシンガポールのリージョンでのみサポートされています。

avif

ソースイメージを AVIF フォーマットで保存します。

説明

AVIF フォーマットは、中国 (張家口)、中国 (上海)、中国 (深セン)、中国 (杭州)、中国 (北京)、およびシンガポールのリージョンでのみサポートされています。

ソースイメージの PNG フォーマットへの変換

処理パラメーターは次のとおりです:

  • イメージを PNG フォーマットに変換: format,png

公開読み書きのイメージの場合、イメージ URL の末尾に ?x-oss-process=image/format,png を追加します。OSS はリアルタイムでイメージを処理し、結果を返します。非公開イメージのフォーマットを変換する場合は、「非公開イメージ」をご参照ください。

次の例では、ソースイメージの URL にパラメーター ?x-oss-process=image/format,png を追加して、GIF イメージを PNG フォーマットに変換する方法を示します:

ソースイメージ

処理済みイメージ

gif

png

ソースイメージの URL:

https://oss-console-img-demo-cn-hangzhou-3az.oss-cn-hangzhou.aliyuncs.com/example.gif

イメージ処理 URL: https://oss-console-img-demo-cn-hangzhou-3az.oss-cn-hangzhou.aliyuncs.com/example.gif?x-oss-process=image/format,png

ソースイメージの JPG フォーマットへの変換とプログレッシブ表示の有効化

処理パラメーターは次のとおりです:

  • イメージを JPG フォーマットに変換: format,jpg

  • イメージのプログレッシブ表示を有効化: interlace,1

公開読み書きのイメージの場合、イメージ URL の末尾に ?x-oss-process=image/interlace,1/format,jpg を追加します。OSS はリアルタイムでイメージを処理し、結果を返します。非公開イメージのフォーマットを変換する場合は、「非公開イメージ」をご参照ください。

次の例では、ソースイメージの URL にパラメーター ?x-oss-process=image/interlace,1/format,jpg を追加して、GIF イメージを JPG フォーマットに変換し、プログレッシブ表示を有効にする方法を示します:

ソースイメージ

処理済みイメージ

gif

image

ソースイメージの URL:

https://oss-console-img-demo-cn-hangzhou-3az.oss-cn-hangzhou.aliyuncs.com/example.gif

イメージ処理 URL: https://oss-console-img-demo-cn-hangzhou-3az.oss-cn-hangzhou.aliyuncs.com/example.gif?x-oss-process=image/interlace,1/format,jpg

ソースイメージの WebP フォーマットへの変換とサイズ変更

処理パラメーターは次のとおりです:

  • イメージを WebP フォーマットに変換: format,webp

  • イメージの幅を 200 px にサイズ変更: resize,w_200

公開読み書きのイメージの場合、イメージ URL の末尾に ?x-oss-process=image/resize,w_200/format,webp を追加します。OSS はリアルタイムでイメージを処理し、結果を返します。非公開イメージのフォーマットを変換する場合は、「非公開イメージ」をご参照ください。

次の例では、ソースイメージの URL にパラメーター x-oss-process=image/resize,w_200/format,webp を追加して、GIF ソースイメージを幅 200 px にサイズ変更し、WebP フォーマットに変換する方法を示します:

ソースイメージ

処理済みイメージ

gif

ソースイメージの URL:

https://oss-console-img-demo-cn-hangzhou-3az.oss-cn-hangzhou.aliyuncs.com/example.gif

イメージ処理 URL:

https://oss-console-img-demo-cn-hangzhou-3az.oss-cn-hangzhou.aliyuncs.com/example.gif?x-oss-process=image/resize,w_200/format,webp

よくある質問

変換先イメージの品質

イメージフォーマットにはデフォルトの品質が設定されています。フォーマット変換時に品質を指定しない場合、OSS はこのデフォルトの品質を使用します。

イメージの品質を向上させたい場合は、フォーマット変換時に、たとえば `?x-oss-process=image/quality,Q_100` のように品質を 100 に設定できます。品質変換の詳細については、「品質変換」をご参照ください。

イメージフォーマット変換プロセスがページの読み込み速度に与える影響

イメージフォーマット変換はリクエストに応じて動的に実行されます。そのため、初回アクセス時にわずかな遅延が発生する場合があります。しかし、変換後のイメージは通常、たとえば PNG から WebP への変換のように、より効率的なフォーマットになりサイズも小さくなります。これにより、2回目以降の読み込みが高速化され、ページ全体のパフォーマンスが向上します。

GIF イメージの MP4 フォーマットへの変換

GIF イメージを MP4 フォーマットに変換するには、チケットを送信して、この機能をリクエストする必要があります。