edit-icon download-icon

画像処理

最終更新日: Feb 28, 2019

Alibaba Cloud OSSは、大量の処理能力、セキュリティ、低コスト、高信頼性を備えた画像処理サービスを提供します。

OSSにソースイメージをアップロードして保存することで、簡単なRESTfulインターフェイスを通じていつでも、どこでも、どんなインターネットデバイスでもイメージを処理できます。

画像処理は画像処理インタフェースを提供します。イメージアップロードの場合は、OSSアップロードインターフェイスを使用します。OSSイメージ処理に基づいて独自のイメージ処理サービスを構築することができます。

画像処理の基本機能

OSS画像処理は以下の機能を提供します:

画像処理の使い方

画像処理は、標準の HTTP GETリクエストを使用してアクセスします。すべての処理パラメータは、 URLのQueyStringでエンコードされます。

匿名アクセス

下の表に示すように、イメージオブジェクトのアクセス許可が “パブリックリード”の場合、匿名でイメージ処理にアクセスできます。

バケット許可 オブジェクトのアクセス許可
Public-readまたは
Public-read-write
デフォルト
すべての許可 Public-readまたは
Public-read-write

次の形式の第3レベルのドメインを使用して匿名で画像処理にアクセスします。

  1. http://bucket.<endpoint>/object?x-oss-process=image/action,parame_value
  • bucket :ユーザのバケット名前
  • endpoint:ユーザのバケットデータセンターのアクセスドメイン名
  • object:OSSにアップロードされたイメージオブジェクト
  • image:画像処理によって予約された識別子
  • action:スケーリング、クロッピング、回転などのイメージ操作
  • parame:画像上のユーザの操作に対応するパラメータ

例えば、

  1. http://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/resize,w_100

カスタムスタイル。次の形式の第3レベルのドメインを使用して匿名で画像処理にアクセスします。

  1. http://bucket.<endpoint>/object?x-oss-process=x-oss-process=style/name
  • style:ユーザのカスタムスタイルのステムによって予約された識別子
  • name:カスタムスタイルの名前、つまりコンソール定義のスタイルの ‘ルール名’

例えば、

  1. http://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=style/oss-pic-style-w-100

カスケード処理を使用すると、イメージに対して複数の操作を実装できます。形式は次のとおりです。

  1. http://bucket.<endpoint>/object?x-oss-process=image/action,parame_value/action,parame_value/...

例えば、

  1. http://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/resize,w_100/rotate,90

画像処理はHTTPSアクセスもサポートしています。例えば、

  1. https://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/resize,w_100

認証されたアクセス

下の表に示すように、個人のアクセス権を持つオブジェクトの場合、イメージ処理にアクセスする権限が必要です。

バケット許可 オブジェクトのアクセス許可
プライベート デフォルト
すべての許可 プライベート

署名付きで生成された画像処理URLコードは次のとおりです。

  1. # -*- coding: utf-8 -*-
  2. import oss2
  3. endpoint = '<endpoint, for example, http://oss-cn-hangzhou.aliyuncs.com>'
  4. access_key_id = '<access_key_id>'
  5. access_key_secret = '<access_key_secret>'
  6. bucket_name = '<bucket_name>'
  7. key = 'example.jpg'
  8. # Create a bucket object. All object-related interfaces can be implemented through the bucket object
  9. bucket = oss2.Bucket(oss2.Auth(access_key_id, access_key_secret), endpoint, bucket_name)
  10. # Upload the example image
  11. bucket.put_object_from_file(key, 'example.jpg')
  12. # Generate a signed URL. The expiration time is 10 minutes
  13. style = 'image/resize,m_fixed,w_100,h_100/rotate,90'
  14. url = bucket.sign_url('GET', key, 10 * 60, params={'x-oss-process': style})
  15. print(url)

ヒント:

  • 承認されたアクセスでは、 カスタムスタイルHTTPS、および カスケード処理がサポートされています。
  • ‘sign_url’タイムアウト値の単位はです。

SDKへのアクセス

「SDK」を直接使用して、任意の権限を持つイメージオブジェクトにアクセスして処理することができます。

ヒント:

  • 完全な画像処理コードは、GitHubにあります。
  • SDKを介した画像オブジェクト処理は、 カスタムスタイルHTTPS、および カスケード処理をサポートします。

基本操作

基本的な画像処理には、画像情報の取得フォーマット変換スケーリングトリミング回転効果透かしが含まれます。

  1. # -*- coding: utf-8 -*-
  2. import os
  3. import oss2
  4. endpoint = '<endpointFor example, 'http://oss-cn-hangzhou.aliyuncs.com>'
  5. access_key_id = '<access_key_id>'
  6. access_key_secret = '<access_key_secret>'
  7. bucket_name = '<bucket_name>'
  8. key = 'example.jpg'
  9. new_pic = 'example-new.jpg'
  10. # Create a bucket object. All object-related interfaces can be implemented through the bucket object
  11. bucket = oss2.Bucket(oss2.Auth(access_key_id, access_key_secret), endpoint, bucket_name)
  12. # Uploading the example image
  13. bucket.put_object_from_file(key, 'example.jpg')
  14. # Scaling
  15. style = 'image/resize,m_fixed,w_100,h_100'
  16. bucket.get_object_to_file(key, new_pic, process=style)
  17. # Cropping
  18. style = 'image/crop,w_100,h_100,x_100,y_100,r_1'
  19. bucket.get_object_to_file(key, new_pic, process=style)
  20. # Rotating
  21. style = 'image/rotate,90'
  22. bucket.get_object_to_file(key, new_pic, process=style)
  23. # Sharpening
  24. style = 'image/sharpen,100'
  25. bucket.get_object_to_file(key, new_pic, process=style)
  26. # adding a text watermark
  27. style = 'image/watermark,text_SGVsbG8g5Zu-54mH5pyN5YqhIQ'
  28. bucket.get_object_to_file(key, new_pic, process=style)
  29. # Converting image formats
  30. style = 'image/format,png'
  31. bucket.get_object_to_file(key, new_pic, process=style)
  32. # Deleting the example image
  33. bucket.delete_object(key)
  34. # Clearing the local file
  35. os.remove(new_pic)

ヒント:get_objectメソッドは画像処理もサポートしています。

カスタムスタイル

  1. # -*- coding: utf-8 -*-
  2. import os
  3. import oss2
  4. endpoint = '<endpoint, For example, 'http://oss-cn-hangzhou.aliyuncs.com>'
  5. access_key_id = '<access_key_id>'
  6. access_key_secret = '<access_key_secret>'
  7. bucket_name = '<bucket_name>'
  8. key = 'example.jpg'
  9. new_pic = 'example-new.jpg'
  10. # Create a bucket object. All object-related interfaces can be implemented through the bucket object
  11. bucket = oss2.Bucket(oss2.Auth(access_key_id, access_key_secret), endpoint, bucket_name)
  12. # Uploading the example image
  13. bucket.put_object_from_file(key, 'example.jpg')
  14. # Custom styles
  15. style = 'style/oss-pic-style-w-100'
  16. # Image processing
  17. bucket.get_object_to_file(key, new_pic, process=style)
  18. # Deleting the example image
  19. bucket.delete_object(key)
  20. # Clearing the local file
  21. os.remove(new_pic)

ヒント:get_objectは画像処理機能もサポートしています。

カスケード処理

  1. # -*- coding: utf-8 -*-
  2. import os
  3. import oss2
  4. endpoint = '<endpoint, for example, http://oss-cn-hangzhou.aliyuncs.com>'
  5. access_key_id = '<access_key_id>'
  6. access_key_secret = '<access_key_secret>'
  7. bucket_name = '<bucket_name>'
  8. key = 'example.jpg'
  9. new_pic = 'example-new.jpg'
  10. # Create a bucket object. All object-related interfaces can be implemented through the bucket object
  11. bucket = oss2.Bucket(oss2.Auth(access_key_id, access_key_secret), endpoint, bucket_name)
  12. # Uploading the example image
  13. bucket.put_object_from_file(key, 'example.jpg')
  14. # Cascading processing
  15. style = 'image/resize,m_fixed,w_100,h_100/rotate,90'
  16. # Image processing
  17. bucket.get_object_to_file(key, new_pic, process=style)
  18. # Deleting the example image
  19. bucket.delete_object(key)
  20. # Clearing the local file
  21. os.remove(new_pic)

ヒント:get_objectは画像処理機能もサポートしています。