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

Object Storage Service:Format conversion

最終更新日:Mar 26, 2026

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

ユースケース

  • さまざまなデバイスやプラットフォームへの適応:異なるデバイスやプラットフォームは異なるイメージフォーマットをサポートしています。OSS のフォーマット変換は、さまざまな端末での互換性と最適な表示を保証します。

  • ストレージコストの削減:WebP などの特定のイメージフォーマットは、視覚的品質を維持しながらファイルサイズが小さくなります。これらのフォーマットに変換することで、ストレージスペースの使用量が削減され、ストレージコストが削減されます。

  • リソース管理の標準化:Eコマース、ソーシャルメディア、デジタルメディアなどの業界では、アップロードされたすべてのイメージを標準フォーマットに変換することで、管理とディストリビューションを簡素化できます。

注意事項

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

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

  • alpha チャンネルを持たないイメージを、PNG、WebP、BMP などの透明度をサポートするフォーマットに変換する場合、結果として生じる透明な領域はデフォルトで白で塗りつぶされます。OSS は、透明な領域を黒で塗りつぶすことをサポートしていません。

  • イメージを WebP フォーマットに変換する場合、ソースイメージの幅と高さは 16,383 px を超えることはできません。いずれかのディメンションがこの制限を超えると、変換に失敗します。

イメージ処理方法

オブジェクト URL は公開読み取りイメージにのみ適しています。非公開イメージの場合、SDK または REST API を使用する必要があります。詳細については、「イメージ処理方法」をご参照ください。

公開イメージ

公開読み取りイメージの場合、処理されたイメージへの永続的な匿名アクセスを可能にするために、処理パラメーターをイメージ URL に直接追加できます。

以下では、?x-oss-process=image/format,parame_value パラメーターを公開読み取りイメージ URL に追加する方法について説明します。parame_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 を使用します。

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";
        // リージョン ID を指定します。例: 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.png。指定されたローカルファイルが存在する場合、上書きされます。ファイルが存在しない場合、作成されます。
        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 のように完全なパスなしでファイル名のみを指定した場合、ファイルはプロジェクトのルートディレクトリに保存されます。
            ossClient.getObject(request, new File("D:\\dest.png"));
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request reached OSS, "
                    + "but was rejected with an error.");
            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 a 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();
// 中国 (杭州) リージョンのエンドポイントを例として使用しています。バケットが配置されているリージョンのエンドポイントを指定してください。
$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,
        // リージョン ID を指定します。例: cn-hangzhou。
        "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())
# 中国 (杭州) リージョンのエンドポイントを例として使用しています。バケットが配置されているリージョンのエンドポイントを指定してください。
endpoint = 'https://oss-cn-hangzhou.aliyuncs.com'
# リージョン ID を指定します。例: cn-hangzhou。
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 インスタンスを作成します。
	// 中国 (杭州) リージョンのエンドポイントを例として使用しています。バケットが配置されているリージョンのエンドポイントを指定してください。
	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

アプリケーションに高度なカスタム要件がある場合、REST API を直接呼び出すことができます。これには、署名を手動で計算する必要があります。Authorization ヘッダーの計算方法については、「Signature Version 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>

パラメーター

アクション: format

説明

jpg

ソースイメージを JPG フォーマットに変換します。

重要

alpha チャンネルを持つ HEIC イメージを JPG フォーマットに変換することはサポートされていません。

png

ソースイメージを PNG フォーマットに変換します。

webp

ソースイメージを WebP フォーマットに変換します。

説明

ソースイメージの幅と高さは 16,383 px を超えることはできません。

bmp

ソースイメージを BMP フォーマットに変換します。

gif

ソースイメージが GIF の場合、GIF のままです。ソースイメージが GIF でない場合、元のフォーマットが維持されます。

tiff

ソースイメージを TIFF フォーマットに変換します。

heic

ソースイメージを HEIF フォーマットに変換します。

説明

サポートされているリージョン: 中国 (張家口)、中国 (上海)、中国 (深セン)、中国 (杭州)、中国 (北京)、シンガポール。

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 はデフォルトの画質を適用します。

イメージの画質を向上させるには、フォーマット変換時に画質を `100` として指定してください(例:`?x-oss-process=image/quality,Q_100`)。画質変換の詳細については、「画質変換」をご参照ください。

フォーマット変換はページ読み込み速度に影響しますか?

OSS では、リクエストに応じてフォーマット変換を動的に行うため、初回アクセス時に若干の遅延が発生する場合があります。ただし、変換後のイメージは通常、PNG を WebP に変換するなど、より効率的なフォーマットでファイルサイズも小さくなるため、以降の読み込みは高速化され、ページ全体のパフォーマンスが向上します。

GIF を MP4 に変換できますか?

GIF を MP4 フォーマットに変換する機能を利用するには、チケットを送信して、この機能の提供を要請してください。