Image Processing (IMG) est un service de traitement d'images sécurisé, rentable et hautement fiable fourni par Object Storage Service (OSS) pour vous aider à traiter de grandes quantités de données. Après avoir chargé vos images sources dans OSS, vous pouvez appeler des opérations d'API RESTful pour traiter les images à tout moment et en tout lieu depuis un appareil connecté à Internet.
Pour plus d'informations sur les paramètres IMG pris en charge, consultez la rubrique Présentation.
Notes d'utilisation
Cette rubrique utilise le point de terminaison public de la région Chine (Hangzhou). Si vous souhaitez accéder à OSS depuis d'autres services Alibaba Cloud situés dans la même région qu'OSS, utilisez un point de terminaison interne. Pour plus d'informations sur les régions et les points de terminaison OSS, consultez la rubrique Régions et points de terminaison.
Cette rubrique explique comment créer une instance OSSClient avec un point de terminaison OSS. Pour découvrir d'autres configurations, telles que l'utilisation d'un domaine personnalisé ou l'authentification via des identifiants Security Token Service (STS), consultez la rubrique Initialisation.
Utiliser des paramètres IMG pour traiter des images
-
Utilisez un seul paramètre IMG pour traiter une image et enregistrez l'image traitée sur votre ordinateur local.
# -*- coding: utf-8 -*- import os import oss2 from oss2.credentials import EnvironmentVariableCredentialsProvider # Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider()) # Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. endpoint = "https://oss-cn-hangzhou.aliyuncs.com" # Specify the ID of the region that maps to the endpoint. Example: cn-hangzhou. This parameter is required if you use the signature algorithm V4. region = "cn-hangzhou" # Specify the name of the bucket. bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region) # Specify the name of the image that you want to process. If the image is not stored in the root directory of the bucket, you must specify the path of the image. Example: example/example.jpg. key = 'yourObjectName' # Specify the name of the processed image. new_pic = 'LocalFileName' # If the image does not exist in the specified bucket, you must upload the image to the bucket. # bucket.put_object_from_file(key, 'yourLocalFile') # Resize the image to 100 × 100 pixels and then save the resized image to your local computer. style = 'image/resize,m_fixed,w_100,h_100' bucket.get_object_to_file(key, new_pic, process=style) # After the image is processed, you can delete the source image from the bucket if you no longer need the image. # bucket.delete_object(key) # If you no longer need the processed image, you can delete the processed image. # os.remove(new_pic) -
Utilisez plusieurs paramètres IMG pour traiter une image et enregistrez l'image traitée sur votre ordinateur local.
L'exemple de code suivant montre comment utiliser plusieurs paramètres IMG pour traiter une image. Les paramètres IMG sont séparés par des barres obliques (/).
# -*- coding: utf-8 -*- import os import oss2 from oss2.credentials import EnvironmentVariableCredentialsProvider # Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider()) # Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. endpoint = "https://oss-cn-hangzhou.aliyuncs.com" # Specify the ID of the region that maps to the endpoint. Example: cn-hangzhou. This parameter is required if you use the signature algorithm V4. region = "cn-hangzhou" # Specify the name of the bucket. bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region) # Specify the name of the bucket in which the source image is stored. Example: examplebucket. bucket_name = 'examplebucket' # Specify the name of the source image. If the image is not stored in the root directory of the bucket, you must specify the path of the image. Example: example/example.jpg. key = 'exampledir/example.jpg' # Specify the name of the processed image. new_pic = 'exampledir/newexample.jpg' # If the image that you want to process does not exist in the specified bucket, you must upload the image that is stored in the local path of the bucket. # bucket.put_object_from_file(key, 'D:\\localpath\\example.jpg') # Resize the image to 100 × 100 pixels, rotate the image 90 degrees, and then save the processed image to your local computer. style = 'image/resize,m_fixed,w_100,h_100/rotate,90' bucket.get_object_to_file(key, new_pic, process=style) # After the image is processed, you can delete the source image from the bucket if you no longer need the image. # bucket.delete_object(key) # If you no longer need the processed image, you can delete the image. # os.remove(new_pic)
Utiliser un style d'image pour traiter des images
Vous pouvez encapsuler plusieurs paramètres IMG dans un style d'image, puis utiliser ce style pour traiter une image. Pour plus d'informations, consultez la rubrique Styles d'image. Le code suivant montre comment utiliser un style d'image pour traiter une image :
# -*- coding: utf-8 -*-
import os
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Specify the ID of the region that maps to the endpoint. Example: cn-hangzhou. This parameter is required if you use the signature algorithm V4.
region = "cn-hangzhou"
# Specify the name of the bucket.
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# Specify the name of the bucket in which the source image is stored. Example: examplebucket.
bucket_name = 'examplebucket'
# Specify the name of the source image. If the image is not stored in the root directory of the bucket, you must specify the path of the image. Example: example/example.jpg.
key = 'exampledir/example.jpg'
# Specify the name of the processed image.
new_pic = 'exampledir/newexample.jpg'
# If the image that you want to process does not exist in the specified bucket, you must upload the image that is stored in the local path of the bucket.
# bucket.put_object_from_file(key, 'D:\\localpath\\example.jpg')
# Use a custom image style to process the image. Set yourCustomStyleName to the name of the image style that you created in the OSS console.
style = 'style/yourCustomStyleName'
# Save the processed image to your local computer.
bucket.get_object_to_file(key, new_pic, process=style)
# After the image is processed, you can delete the source image from the bucket if you no longer need the image.
# bucket.delete_object(key)
# If you no longer need the processed image, you can delete the image.
# os.remove(new_pic)
Enregistrer des images traitées
Vous pouvez appeler l'opération ImgSaveAs pour enregistrer les images traitées dans un bucket spécifique. L'exemple de code suivant montre comment enregistrer une image traitée :
# -*- coding: utf-8 -*-
import os
import base64
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Specify the ID of the region that maps to the endpoint. Example: cn-hangzhou. This parameter is required if you use the signature algorithm V4.
region = "cn-hangzhou"
# Specify the name of the bucket.
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# Specify the name of the bucket in which the source image is stored.
source_bucket_name = 'srcbucket'
# Specify the name of the bucket in which you want to save the processed image. The bucket must be within the same region as the bucket in which the source image is stored.
target_bucket_name = 'destbucket'
# Specify the name of the source image. If the image is not stored in the root directory of the bucket, you must specify the full path of the image. Example: example/example.jpg.
source_image_name = 'example/example.jpg'
# Resize the image to 100 × 100 pixels.
style = 'image/resize,m_fixed,w_100,h_100'
# Specify the name of the processed image. If the image is not stored in the root directory of the bucket, you must specify the full path of the image. Example: 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)
Générer une URL d'objet signée incluant des paramètres IMG
Les URL des objets privés doivent être signées. Il n'est pas possible d'ajouter des paramètres IMG à la fin d'une URL signée. Si vous souhaitez traiter un objet image privé, ajoutez les paramètres IMG à la signature. L'exemple de code suivant montre comment ajouter des paramètres IMG à une signature :
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Specify the ID of the region that maps to the endpoint. Example: cn-hangzhou. This parameter is required if you use the signature algorithm V4.
region = "cn-hangzhou"
# Specify the name of the bucket.
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# Specify the name of the bucket. Example: examplebucket.
bucket_name = 'examplebucket'
# Specify the name of the bucket in which the image is stored. If the image is not stored in the root directory of the bucket, you must specify the full path of the image. Example: exampledir/example.jpg.
key = 'exampledir/example.jpg'
# If the image is not stored in the specified bucket, you must upload the image to the bucket.
# bucket.put_object_from_file(key, 'D:\\localpath\\example.jpg')
# Resize the image to 100 × 100 pixels and rotate the image 90 degrees.
style = 'image/resize,m_fixed,w_100,h_100/rotate,90'
# Generate a signed object URL that includes IMG parameters. Set the validity period of the URL to 600. Unit: seconds.
url = bucket.sign_url('GET', key, 10 * 60, params={'x-oss-process': style})
print(url)
Références
Pour consulter l'exemple de code complet relatif à l'utilisation d'IMG, accédez à GitHub.