Le service de traitement d'images (IMG) fourni par Object Storage Service (OSS) est un service sécurisé, économique et hautement fiable qui permet de traiter un grand nombre d'images. Une fois vos images chargées sur OSS, vous pouvez appeler des opérations d'API RESTful pour les traiter depuis n'importe quel appareil connecté à Internet, à tout moment et en tout lieu.
Remarques relatives à l'utilisation
Avant d'exécuter l'exemple de code présenté dans cette rubrique, créez une instance OSSClient en utilisant des méthodes telles que l'utilisation d'un nom de domaine personnalisé ou du Security Token Service (STS). Pour plus d'informations, consultez la section Initialisation (SDK Android).
Utilisation du service IMG
Les paramètres IMG s'appliquent uniquement aux données d'image téléchargées et n'affectent pas les images sources. Pour remplacer les images sources par les images traitées, consultez la section Enregistrement des images traitées.
-
Accès anonyme
String url = oss.presignPublicObjectURL(testBucket, testObject); OSSLog.logDebug("signPublicURL", "get url: " + url); Then, append the x-oss-process parameter to the URL. The parameter's value specifies the image processing operation. -
Accès autorisé
Pour traiter une image à l'aide du SDK, appelez la méthode
request.setxOssProcess()afin de définir les paramètres de traitement pour la demande de téléchargement. Le code suivant illustre cette procédure :// Create a request to download an image. // Specify the bucket name (for example, examplebucket) and the object full path (for example, exampledir/exampleobject.txt). The object full path cannot contain the bucket name. GetObjectRequest request = new GetObjectRequest("examplebucket", "exampledir/exampleobject.txt"); // Process the image. request.setxOssProcess("image/resize,m_fixed,w_100,h_100"); OSSAsyncTask task = oss.asyncGetObject(get, new OSSCompletedCallback<GetObjectRequest, GetObjectResult>() { @Override public void onSuccess(GetObjectRequest request, GetObjectResult result) { // The request is successful. InputStream inputStream = result.getObjectContent(); byte[] buffer = new byte[2048]; int len; try { while ((len = inputStream.read(buffer)) != -1) { // Process the downloaded data. } } catch (IOException e) { e.printStackTrace(); } } @Override public void onFailure(GetObjectRequest request, ClientException clientException, ServiceException serviceException) { // Handle the exception. You can add your own exception handling logic. } });RemarquePour effectuer d'autres opérations sur l'image, modifiez l'argument transmis à
request.setxOssProcess(). -
Accès via le SDK OSS
GetObjectRequest request = new GetObjectRequest("bucket-name", "image-name"); request.setxOssProcess("image/resize,m_lfit,w_100,h_100"); // Set image processing parameters. OSSAsyncTask task = oss.asyncGetObject(request, getCallback);
Enregistrement des images traitées
L'exemple de code suivant montre comment enregistrer des images traitées :
// fromBucket and toBucket specify the source and destination bucket names.
// fromObjectKey and toObjectKey specify the source and destination object names. The names must be full paths that include the file extension, for example, abc/efg/123.jpg.
// action specifies the image processing operation, such as "image/resize,m_lfit,w_100,h_100".
ImagePersistRequest request = new ImagePersistRequest(fromBucket,fromObjectKey,toBucket,toObjectKey,action);
OSSAsyncTask task = oss.asyncImagePersist(request, new OSSCompletedCallback<ImagePersistRequest, ImagePersistResult>() {
@Override
public void onSuccess(ImagePersistRequest request, ImagePersistResult result) {
// Success callback
log.i("info", "Success");
}
@Override
public void onFailure(ImagePersistRequest request, ClientException clientException, ServiceException serviceException) {
// The request failed.
if (clientException != null) {
// A client-side exception occurred, such as a network error.
clientException.printStackTrace();
}
if (serviceException != null) {
// A server-side exception occurred.
Log.e("ErrorCode", serviceException.getErrorCode());
Log.e("RequestId", serviceException.getRequestId());
Log.e("HostId", serviceException.getHostId());
Log.e("RawMessage", serviceException.getRawMessage());
}
}
});
Références
Pour plus d'informations sur les paramètres IMG pris en charge, consultez la section Paramètres IMG.
Pour consulter l'exemple de code complet utilisé pour effectuer des opérations IMG, rendez-vous sur GitHub.
Pour plus d'informations sur l'initialisation d'une instance OSSClient, consultez la section Initialisation.