全部产品
Search
文档中心

对象存储 OSS:Android图片处理

更新时间:Feb 27, 2024

图片处理是OSS提供的海量、安全、低成本、高可靠的图片处理服务。原始图片上传到OSS后,您可以通过简单的RESTful接口,在任何时间、任何地点、任何互联网设备上对图片进行处理。

注意事项

图片处理使用

说明

这里图片处理后只会应用于“// 处理下载的数据”处的使用方式,并不会改变OSS的原文件,如需使用处理后的图片文件替换原文件,请参考图片处理持久化

  • 匿名访问

    String url = oss.presignPublicObjectURL(testBucket, testObject);
            OSSLog.logDebug("signPublicURL", "get url: " + url);
    然后对生成的url追加x-oss-process:operation 的参数,operation代表的是图片处理操作
  • 授权访问

    SDK中使用图片处理时,只需要在下载图片时调用request.setxOssProcess()方法设置处理参数。示例如下:

    // 构造图片下载请求。
    // 依次填写Bucket名称(例如examplebucket)和Object完整路径(例如exampledir/exampleobject.txt)。Object完整路径中不能包含Bucket名称。
    GetObjectRequest request = new GetObjectRequest("examplebucket", "exampledir/exampleobject.txt");
    
    // 图片处理。
    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) {
            // 请求成功。
            InputStream inputStream = result.getObjectContent();
    
            byte[] buffer = new byte[2048];
            int len;
    
            try {
                while ((len = inputStream.read(buffer)) != -1) {
                    // 处理下载的数据。
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        @Override
        public void onFailure(GetObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {
            // 处理异常,用户可自行填写。
        }
    });
    说明

    如需对图片进行其它处理,只需替换request.setxOssProcess()的相关参数。

  • SDK访问

    GetObjectRequest request = new GetObjectRequest("bucket-name", "image-name");
    request.setxOssProcess("image/resize,m_lfit,w_100,h_100");  // 设置图片处理。
    OSSAsyncTask task = ossClient.asyncGetObject(request, getCallback);

图片处理持久化

以下代码用于图片处理持久化:

// fromBucket和toBucket分别表示源Bucket和目的Bucket名称。
// fromObjectKey和toObjectkey分别表示源Object和目标Object名称,其填写格式为指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。
// action表示图片处理操作,如上面示例提到的"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) {
                // sucess callback
                log.i("info", "Success");
            }

            @Override
            public void onFailure(ImagePersistRequest request, ClientException clientException, ServiceException serviceException) {
              // 请求异常。
              if (clientException != null) {
                  // 客户端异常,例如网络异常等。
                  clientException.printStackTrace();
              }
              if (serviceException != null) {
                  // 服务端异常。
                  Log.e("ErrorCode", serviceException.getErrorCode());
                  Log.e("RequestId", serviceException.getRequestId());
                  Log.e("HostId", serviceException.getHostId());
                  Log.e("RawMessage", serviceException.getRawMessage());
              }
            }
        });

相关文档