イメージ処理は、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 の例をご参照ください。