Image Processing (IMG) は、大量のデータを処理するのに役立つObject Storage service (OSS) が提供する、安全で費用対効果の高い信頼性の高い画像処理サービスです。 ソース画像をOSSにアップロードした後、RESTful APIを呼び出して、いつでもどこでもインターネットに接続されているデバイスで画像を処理できます。
サポートされるIMGパラメーターの詳細については、「概要」をご参照ください。
使用上の注意
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。 OSSと同じリージョンにある他のAlibaba CloudサービスからOSSにアクセスする場合は、内部エンドポイントを使用します。 OSSリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
このトピックでは、OSSエンドポイントを使用してOSSClientインスタンスを作成します。 カスタムドメイン名またはSTS (Security Token Service) を使用してOSSClientインスタンスを作成する場合は、「初期化」をご参照ください。
IMGパラメータを使用した画像処理
単一のIMGパラメータを使用して画像を処理し、処理した画像をローカルコンピュータに保存する
# -*-コーディング: utf-8 -*- osのインポート oss2のインポート oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート # 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider()) # バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 # バケットの名前を指定します。 bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket') # 処理するイメージの名前を指定します。 イメージがバケットのルートディレクトリに保存されていない場合は、イメージのパスを指定する必要があります。 例: Example /example.jpg key = 'yourObjectName' # 処理されたイメージの名前を指定します。 new_pic = 'LocalFileName' # 指定されたバケットに画像が存在しない場合は、画像をバケットにアップロードする必要があります。 # bucket.put_object_from_file (キー、'yourLocalFile ') # 画像のサイズを100 × 100ピクセルに変更し、サイズを変更した画像をローカルコンピューターに保存します。 style = 'image/resize,m_fixed,w_100,h_100' bucket.get_object_to_file(key, new_pic, process=style) # イメージが処理された後、イメージが不要になった場合は、バケットからソースイメージを削除できます。 # bucket.de lete_object (キー) # 処理済みイメージが不要になった場合は、処理済みイメージを削除できます。 # os.remove(new_pic)
複数のIMGパラメータを使用して画像を処理し、処理した画像をローカルコンピュータに保存する
次のサンプルコードは、複数のIMGパラメーターを使用してイメージを処理する方法の例を示しています。 IMGパラメータはスラッシュ (/) で区切られます。
# -*-コーディング: utf-8 -*- osのインポート oss2のインポート oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート # 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider()) # バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 # バケットの名前を指定します。 bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket') # ソースイメージが保存されているバケットの名前を指定します。 例: examplebucket. bucket_name = 'examplebucket' # ソースイメージの名前を指定します。 イメージがバケットのルートディレクトリに保存されていない場合は、イメージのパスを指定する必要があります。 例: Example /example.jpg key = 'exampledir/example.jpg' # 処理されたイメージの名前を指定します。 new_pic = 'exampledir/newexample.jpg' # 処理するイメージが指定されたバケットに存在しない場合は、バケットのローカルパスに保存されているイメージをアップロードする必要があります。 # bucket.put_object_from_file (キー、'D :\\ localpath\\example.jpg ') # 画像のサイズを100 × 100ピクセルに変更し、画像を90度回転させてから、処理した画像をローカルコンピューターに保存します。 style = 'image/resize,m_fixed,w_100,h_100/rotate,90' bucket.get_object_to_file(key, new_pic, process=style) # イメージが処理された後、イメージが不要になった場合は、バケットからソースイメージを削除できます。 # bucket.de lete_object (キー) # 処理済みの画像が不要になった場合は、画像を削除できます。 # os.remove(new_pic)
画像スタイルを使用して画像を処理する
イメージスタイル内に複数のIMGパラメータをカプセル化し、イメージスタイルを使用してイメージを処理できます。 詳細については、「イメージスタイル」をご参照ください。 次のコードは、イメージスタイルを使用してイメージを処理する方法の例を示しています。
# -*-コーディング: utf-8 -*-
osのインポート
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
# バケットの名前を指定します。
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')
# ソースイメージが保存されているバケットの名前を指定します。 例: examplebucket.
bucket_name = 'examplebucket'
# ソースイメージの名前を指定します。 イメージがバケットのルートディレクトリに保存されていない場合は、イメージのパスを指定する必要があります。 例: Example /example.jpg
key = 'exampledir/example.jpg'
# 処理されたイメージの名前を指定します。
new_pic = 'exampledir/newexample.jpg'
# 処理するイメージが指定されたバケットに存在しない場合は、バケットのローカルパスに保存されているイメージをアップロードする必要があります。
# bucket.put_object_from_file (キー、'D :\\ localpath\\example.jpg ')
# カスタム画像スタイルを使用して画像を処理します。 yourCustomStyleNameをOSSコンソールで作成したイメージスタイルの名前に設定します。
style = 'style/yourCustomStyleName'
# 処理した画像をローカルコンピューターに保存します。
bucket.get_object_to_file(key, new_pic, process=style)
# イメージが処理された後、イメージが不要になった場合は、バケットからソースイメージを削除できます。
# bucket.de lete_object (キー)
# 処理済みの画像が不要になった場合は、画像を削除できます。
# os.remove(new_pic)
処理された画像を保存する
ImgSaveAs操作を呼び出して、処理した画像を特定のバケットに保存できます。 次のサンプルコードは、処理されたイメージを保存する方法の例を示します。
# -*-コーディング: utf-8 -*-
osのインポート
インポートbase64
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
# バケットの名前を指定します。
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')
# ソースイメージが保存されているバケットの名前を指定します。
source_bucket_name = 'srcbucket'
# 処理されたイメージを保存するバケットの名前を指定します。 バケットは、ソースイメージが保存されているバケットと同じリージョン内にある必要があります。
target_bucket_name = 'destbucket'
# ソースイメージの名前を指定します。 イメージがバケットのルートディレクトリに保存されていない場合は、イメージのフルパスを指定する必要があります。 例: Example /example.jpg
source_image_name = 'example/example.jpg'
# 画像のサイズを100 × 100ピクセルに変更します。
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.urlsaf_b64encode (oss2.compat.to_bytes(target_bucket_name))))
result = bucket.process_object(source_image_name, process)
プリント (結果)
IMGパラメータを含む署名付きオブジェクトURLを生成する
プライベートオブジェクトのURLに署名する必要があります。 署名付きURLの末尾にIMGパラメーターを追加することはできません。 プライベートイメージオブジェクトを処理する場合は、署名にIMGパラメータを追加します。 次のサンプルコードは、署名にIMGパラメーターを追加する方法の例を示しています。
# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
# バケットの名前を指定します。
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')
# バケットの名前を指定します。 例: examplebucket.
bucket_name = 'examplebucket'
# イメージが保存されているバケットの名前を指定します。 イメージがバケットのルートディレクトリに保存されていない場合は、イメージのフルパスを指定する必要があります。 例: exampledir/example.jpg
key = 'exampledir/example.jpg'
# 画像が指定されたバケットに保存されていない場合は、画像をバケットにアップロードする必要があります。
# bucket.put_object_from_file (キー、'D :\\ localpath\\example.jpg ')
# 画像のサイズを100 × 100ピクセルに変更し、画像を90度回転させます。
style = 'image/resize,m_fixed,w_100,h_100/rotate,90'
# IMGパラメータを含む署名付きオブジェクトURLを生成します。 URLの有効期間を600に設定します。 単位は秒です。
url = bucket.sign_url('GET', key, 10*60, params={'x-oss-process': style})
プリント (url)
参考資料
IMGの使用方法に関する完全なサンプルコードについては、『GitHub』をご参照ください。