开发者社区 问答 正文

Java-SDK之如何实现图片处理(二)?


授权访问


对私有权限的文件(Object),如下表所示的权限,必须通过授权才能访问图片服务。

Bucket权限Object权限
私有读写(private)默认权限(default)
任意权限私有读写(private)

生成带签名的图片处理的URL代码如下:
  1.     String endpoint = "<endpoint, 例如http://oss-cn-hangzhou.aliyuncs.com>";
  2.     String accessKeyId = "<accessKeyId>";
  3.     String accessKeySecret = "<accessKeySecret>";
  4.     String bucketName = "<bucketName>";
  5.     private static String key = "example.jpg";
  6.     OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  7.     // 图片处理样式
  8.     String style = "image/resize,m_fixed,w_100,h_100/rotate,90";
  9.     // 过期时间10分钟
  10.     Date expiration = new Date(new Date().getTime() + 1000 * 60 * 10 );
  11.     GeneratePresignedUrlRequest req = new GeneratePresignedUrlRequest(bucketName, key, HttpMethod.GET);
  12.     req.setExpiration(expiration);
  13.     req.setProcess(style);
  14.     URL signedUrl = ossClient.generatePresignedUrl(req);
  15.     System.out.println(signedUrl);

提示:
  • 授权访问支持 自定义样式、 HTTPS、 级联处理
  • 指定过期时间请使用 Date expiration = DateUtil.parseRfc822Date("Wed, 21 Dec 2022 14:20:00 GMT");


SDK访问


对于任意权限的图片文件,都可以直接使用 SDK 访问图片、进行处理。

提示:
  • 图片处理的完整代码请参考:GitHub
  • SDK处理图片文件支持 自定义样式、 HTTPS、 级联处理


基础操作


图片处理的基础操作包括, 获取图片信息格式转换缩放裁剪旋转效果水印等。
  1.     String endpoint = "<endpoint, 例如http://oss-cn-hangzhou.aliyuncs.com>";
  2.     String accessKeyId = "<accessKeyId>";
  3.     String accessKeySecret = "<accessKeySecret>";
  4.     String bucketName = "<bucketName>";
  5.     String key = "example.jpg";
  6.     OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  7.     // 缩放
  8.     String style = "image/resize,m_fixed,w_100,h_100";  
  9.     GetObjectRequest request = new GetObjectRequest(bucketName, key);
  10.     request.setProcess(style);
  11.     ossClient.getObject(request, new File("example-resize.jpg"));
  12.     // 裁剪
  13.     style = "image/crop,w_100,h_100,x_100,y_100,r_1";
  14.     request = new GetObjectRequest(bucketName, key);
  15.     request.setProcess(style);
  16.     ossClient.getObject(request, new File("example-crop.jpg"));
  17.     // 旋转
  18.     style = "image/rotate,90";
  19.     request = new GetObjectRequest(bucketName, key);
  20.     request.setProcess(style);
  21.     ossClient.getObject(request, new File("example-rotate.jpg"));
  22.     // 锐化
  23.     style = "image/sharpen,100";
  24.     request = new GetObjectRequest(bucketName, key);
  25.     request.setProcess(style);
  26.     ossClient.getObject(request, new File("example-sharpen.jpg"));
  27.     // 水印
  28.     style = "image/watermark,text_SGVsbG8g5Zu-54mH5pyN5YqhIQ";
  29.     request = new GetObjectRequest(bucketName, key);
  30.     request.setProcess(style);
  31.     ossClient.getObject(request, new File("example-watermark.jpg"));
  32.     // 格式转换
  33.     style = "image/format,png";
  34.     request = new GetObjectRequest(bucketName, key);
  35.     request.setProcess(style);
  36.     ossClient.getObject(request, new File("example-format.png"));
  37.     // 图片信息
  38.     style = "image/info";
  39.     request = new GetObjectRequest(bucketName, key);
  40.     request.setProcess(style);
  41.     ossClient.getObject(request, new File("example-info.txt"));
  42.     ossClient.shutdown();


自定义样式

  1.     String endpoint = "<endpoint, 例如http://oss-cn-hangzhou.aliyuncs.com>";
  2.     String accessKeyId = "<accessKeyId>";
  3.     String accessKeySecret = "<accessKeySecret>";
  4.     String bucketName = "<bucketName>";
  5.     String key = "example.jpg";
  6.     OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  7.     // 自定义样式
  8.     String style = "style/oss-pic-style-w-100";  
  9.     GetObjectRequest request = new GetObjectRequest(bucketName, key);
  10.     request.setProcess(style);
  11.     ossClient.getObject(request, new File("example-new.jpg"));
  12.     ossClient.shutdown();


级联处理

  1.     String endpoint = "<endpoint, 例如http://oss-cn-hangzhou.aliyuncs.com>";
  2.     String accessKeyId = "<accessKeyId>";
  3.     String accessKeySecret = "<accessKeySecret>";
  4.     String bucketName = "<bucketName>";
  5.     private static String key = "example.jpg";
  6.     OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  7.     // 级联处理
  8.     String style = "image/resize,m_fixed,w_100,h_100/rotate,90";  
  9.     GetObjectRequest request = new GetObjectRequest(bucketName, key);
  10.     request.setProcess(style);
  11.     ossClient.getObject(request, new File("example-new.jpg"));
  12.     ossClient.shutdown();


图片处理工具

  • 可视化图片处理工具 ImageStyleViever ,可以直观的看到OSS图片处理的结果
  • OSS图片处理的功能、使用演示 页面


展开
收起
青衫无名 2017-10-18 11:14:12 2186 分享 版权
0 条回答
写回答
取消 提交回答