O Image Processing (IMG) do Object Storage Service (OSS) é um service seguro, econômico e altamente confiável para processar grandes volumes de imagens. Após carregar as imagens no OSS, chame operações da API RESTful para processá-las a qualquer momento e em qualquer lugar, desde que o dispositivo esteja conectado à internet.
Observações de uso
Antes de executar o código de exemplo deste tópico, crie uma instância do OSSClient por meio de métodos como nome de domínio personalizado ou Security Token Service (STS). Para mais informações, consulte Initialization (Android SDK).
Uso do IMG
Os parâmetros do IMG aplicam-se apenas aos dados da imagem baixada e não afetam as imagens originais. Para substituir as imagens originais pelas versões processadas, consulte Save processed images.
-
Acesso anônimo
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. -
Acesso autorizado
Para processar uma imagem com o SDK, chame o método
request.setxOssProcess()e defina os parâmetros de processamento na solicitação de download. O código abaixo apresenta um exemplo:// 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. } });NotaPara execute outras operações na imagem, substitua o argumento passado para
request.setxOssProcess(). -
Acesso via OSS SDK
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);
Salvar imagens processadas
O exemplo de código a seguir demonstra como salve imagens processadas:
// 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());
}
}
});
Referências
Para obter detalhes sobre os parâmetros de IMG compatíveis, consulte IMG parameters.
O código de exemplo completo para operações de IMG está disponível no GitHub.
Para saber mais sobre como inicializar uma instância do OSSClient, consulte Initialization.