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

Object Storage Service:イメージ処理 (Python SDK V1)

最終更新日:Nov 29, 2025

イメージ処理は、Object Storage Service (OSS) が提供する、スケーラブルで安全、コスト効率が高く、信頼性の高いサービスです。イメージを OSS にアップロードした後、シンプルな RESTful API を使用して、インターネットに接続された任意のデバイスでイメージを処理できます。

サポートされているイメージ処理パラメーターの詳細については、「イメージ処理」をご参照ください。

注意事項

  • このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。OSS と同じリージョンにある他の Alibaba Cloud サービスから OSS にアクセスする場合は、内部エンドポイントを使用します。OSS のリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。

  • このトピックでは、OSS エンドポイントを使用して OSSClient インスタンスを作成します。カスタムドメイン名または Security Token Service (STS) を使用して OSSClient インスタンスを作成する場合は、「初期化」をご参照ください。

イメージ処理パラメーターを使用したイメージの処理

  • 単一のイメージ処理パラメーターを使用してイメージを処理し、結果をローカルファイルとして保存

    # -*- coding: utf-8 -*-
    import os
    import oss2
    from oss2.credentials import EnvironmentVariableCredentialsProvider
    
    # 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、環境変数 OSS_ACCESS_KEY_ID と OSS_ACCESS_KEY_SECRET が設定されていることを確認してください。
    auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
    
    # バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
    endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
    # バケットが配置されているリージョン (cn-hangzhou など) を指定します。 このパラメーターは V4 署名に必要です。
    region = "cn-hangzhou"
    
    # examplebucket をご使用のバケットの名前に設定します。
    bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
    
    # yourObjectName をターゲットイメージの名前に設定します。 イメージがバケットのルートディレクトリにない場合は、example/example.jpg などの完全なパスを指定する必要があります。
    key = 'yourObjectName'
    # LocalFileName を処理後のイメージの名前に設定します。
    new_pic = 'LocalFileName'
    
    # ターゲットイメージが指定されたバケットにない場合は、イメージをバケットにアップロードします。
    # bucket.put_object_from_file(key, 'yourLocalFile')
    
    # イメージのサイズを幅と高さが 100 px の固定値に変更し、ローカルマシンに保存します。
    style = 'image/resize,m_fixed,w_100,h_100'
    bucket.get_object_to_file(key, new_pic, process=style)
    
    # イメージの処理後、不要になったソースイメージをバケットから削除できます。
    # bucket.delete_object(key)
    # 処理後のイメージが不要になった場合は、削除できます。
    # os.remove(new_pic)
  • 複数のイメージ処理パラメーターを使用してイメージを処理し、結果をローカルファイルとして保存

    複数のイメージ処理パラメーターを使用する場合は、スラッシュ (/) で区切ります。

    # -*- coding: utf-8 -*-
    import os
    import oss2
    from oss2.credentials import EnvironmentVariableCredentialsProvider
    
    # 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、環境変数 OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET が設定されていることを確認してください。
    auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
    
    # バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
    endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
    # バケットが配置されているリージョン (cn-hangzhou など) を指定します。このパラメーターは V4 署名では必須です。
    region = "cn-hangzhou"
    
    # examplebucket をお使いのバケットの名前に設定します。
    bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
    
    # ソースイメージが格納されているバケットの名前 (examplebucket など) を指定します。
    bucket_name = 'examplebucket'
    # ソースイメージの名前を指定します。イメージがバケットのルートディレクトリにない場合は、イメージの完全なパス (exampledir/example.jpg など) を指定する必要があります。
    key = 'exampledir/example.jpg'
    # 処理後のイメージの名前を指定します。
    new_pic = 'exampledir/newexample.jpg'
    
    # イメージが指定されたバケットにない場合は、ローカルパスからバケットにイメージをアップロードします。
    # bucket.put_object_from_file(key, 'D:\\localpath\\example.jpg')
    
    # イメージのサイズを幅と高さが 100 px の固定値に変更し、90 度回転させてから、ローカルマシンに保存します。
    style = 'image/resize,m_fixed,w_100,h_100/rotate,90'
    bucket.get_object_to_file(key, new_pic, process=style)
    # イメージの処理後、ソースイメージが不要になった場合は、バケットから削除できます。
    # bucket.delete_object(key)
    # 処理後のイメージが不要になった場合は、削除できます。
    # os.remove(new_pic)

イメージスタイルを使用したイメージの処理

複数のイメージ処理パラメーターをスタイルにカプセル化し、そのスタイルを使用してイメージをバッチ処理できます。詳細については、「イメージスタイル」をご参照ください。次のコードは、イメージスタイルを使用してイメージを処理する方法を示しています。

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

# 環境変数からアクセス認証情報を取得します。 サンプルコードを実行する前に、環境変数 OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET が設定されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# バケットが配置されているリージョン (cn-hangzhou など) を指定します。 このパラメーターは V4 署名に必要です。
region = "cn-hangzhou"

# examplebucket をお使いのバケット名に設定します。
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)

# ソースイメージが格納されているバケットの名前 (examplebucket など) を指定します。
bucket_name = 'examplebucket'
# ソースイメージの名前を指定します。 イメージがバケットのルートディレクトリにない場合は、イメージの完全なパス (exampledir/example.jpg など) を指定する必要があります。
key = 'exampledir/example.jpg'
# 処理後のイメージの名前を指定します。
new_pic = 'exampledir/newexample.jpg'

# イメージが指定されたバケットにない場合は、ローカルパスからバケットにイメージをアップロードします。
# bucket.put_object_from_file(key, 'D:\\localpath\\example.jpg')

# カスタムスタイルを使用してイメージを処理します。 yourCustomStyleName を、OSS コンソールで作成したイメージスタイルの名前に設定します。
style = 'style/yourCustomStyleName'
# 処理後のイメージをローカルマシンに保存します。
bucket.get_object_to_file(key, new_pic, process=style)
# イメージの処理後、ソースイメージが不要になった場合は、バケットから削除できます。
# bucket.delete_object(key)
# 処理後のイメージが不要になった場合は、削除できます。
# os.remove(new_pic)

イメージ処理の永続化

ImgSaveAs API を使用して、処理後のイメージを指定したバケットに保存できます。次のコードは、イメージ処理の永続化操作を実行する方法を示しています。

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

# 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、環境変数 OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET が設定されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# cn-hangzhou など、バケットが配置されているリージョンを指定します。このパラメーターは V4 署名に必要です。
region = "cn-hangzhou"

# examplebucket をご使用のバケットの名前に設定します。
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)

# ソースイメージが格納されているバケットの名前を指定します。
source_bucket_name = 'srcbucket'
# 処理後のイメージを格納するバケットの名前を指定します。このバケットは、ソースバケットと同じリージョンにある必要があります。
target_bucket_name = 'destbucket'
# ソースイメージの名前を指定します。イメージがバケットのルートディレクトリにない場合は、example/example.jpg のようにファイルの完全なパスを指定する必要があります。
source_image_name = 'example/example.jpg'

# イメージの幅と高さを 100 px に固定してサイズ変更します。
style = 'image/resize,m_fixed,w_100,h_100'
# 処理後のイメージの名前を指定します。イメージがバケットのルートディレクトリにない場合は、exampledir/example.jpg のようにファイルの完全なパスを指定する必要があります。
target_image_name = 'exampledir/example.jpg'
process = "{0}|sys/saveas,o_{1},b_{2}".format(style,
    oss2.compat.to_string(base64.urlsafe_b64encode(oss2.compat.to_bytes(target_image_name))),
    oss2.compat.to_string(base64.urlsafe_b64encode(oss2.compat.to_bytes(target_bucket_name))))
result = bucket.process_object(source_image_name, process)
print(result)

イメージ処理パラメーターを含むファイルの署名付き URL の生成

非公開ファイルのアクセス URL は署名されています。OSS では、署名付き URL にイメージ処理パラメーターを直接追加することはできません。非公開ファイルを処理する場合は、署名にイメージ処理パラメーターを追加する必要があります。次のコードに例を示します。

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

# 環境変数からアクセス認証情報を取得します。 サンプルコードを実行する前に、環境変数 OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET が設定されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# バケットが配置されているリージョン (cn-hangzhou など) を指定します。 このパラメーターは V4 署名に必要です。
region = "cn-hangzhou"

# examplebucket をご使用のバケット名に設定します。
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)

# バケット名 (examplebucket など) を指定します。
bucket_name = 'examplebucket'
# イメージのオブジェクト名を指定します。 イメージがバケットのルートディレクトリにない場合は、exampledir/example.jpg のようにファイルの完全なパスを指定する必要があります。
key = 'exampledir/example.jpg'

# イメージが指定されたバケットにない場合は、イメージを宛先バケットにアップロードします。
# bucket.put_object_from_file(key, 'D:\\localpath\\example.jpg')
# イメージの幅と高さを 100 px に固定してサイズ変更し、90 度回転させます。
style = 'image/resize,m_fixed,w_100,h_100/rotate,90'
# 10 分間有効な署名付き URL を生成します。 有効期間は秒単位で指定します。
url = bucket.sign_url('GET', key, 10 * 60, params={'x-oss-process': style})
print(url)

関連ドキュメント

イメージ処理の完全なサンプルコードについては、GitHub の例をご参照ください。