...
我用了getObject方法,但是好像获取的是个OSSObject,这个里面就直接是图片的流了,而且SDK中图片处理只是提到,加水印,旋转,然后存到本地,处理参数中这些操作和获取主色调(average-hue),也就是说其实加水印和旋转应该是可以用同样的操作而出来的,但是获取主色调只是一个信息呀,其他的是下载了一个图片
您好,您可以使用Java SDK的getObject方法获取OSS Object并进行图片处理,然后读取经过图片处理后的Object的内容。
代码示例如下:
import com.aliyun.oss.*;import com.aliyun.oss.model.GetObjectRequest;import com.aliyun.oss.model.OSSObject;import java.io.*;public class Demo { public static void main(String[] args) throws Throwable { // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。 String endpoint = "https://oss-cn-hangzhou.aliyuncs.com"; // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。 String accessKeyId = "LTAI5tMH7***"; String accessKeySecret = "sRaQg0i3SH9***"; // 填写Bucket名称,例如examplebucket。 String bucketName = "examplebucket"; // 填写Object完整路径。Object完整路径中不能包含Bucket名称。 String objectName = "demo.png"; // 创建OSSClient实例。 OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); try { // 将图片缩放为固定宽高100 px后,再旋转90°。 String style = "image/average-hue"; GetObjectRequest request = new GetObjectRequest(bucketName, objectName); request.setProcess(style); // 读取处理后的文件内容。 System.out.println("Object content:"); OSSObject ossObject = ossClient.getObject(request); BufferedReader reader = new BufferedReader(new InputStreamReader(ossObject.getObjectContent())); while (true) { String line = reader.readLine(); if (line == null) break; System.out.println("\n" + line); } // 数据读取完成后,获取的流必须关闭,否则会造成连接泄漏,导致请求无连接可用,程序无法正常工作。 reader.close(); // ossObject对象使用完毕后必须关闭,否则会造成连接泄漏,导致请求无连接可用,程序无法正常工作。 ossObject.close(); } catch (OSSException oe) { System.out.println("Caught an OSSException, which means your request made it to OSS, " + "but was rejected with an error response for some reason."); System.out.println("Error Message:" + oe.getErrorMessage()); System.out.println("Error Code:" + oe.getErrorCode()); System.out.println("Request ID:" + oe.getRequestId()); System.out.println("Host ID:" + oe.getHostId()); } catch (ClientException ce) { System.out.println("Caught an ClientException, which means the client encountered " + "a serious internal problem while trying to communicate with OSS, " + "such as not being able to access the network."); System.out.println("Error Message:" + ce.getMessage()); } finally { if (ossClient != null) { ossClient.shutdown(); } } }}
返回示例如下:
Object content:{"RGB": "0x5c783b"}Process finished with exit code 0
更多信息,请参见文档:https://help.aliyun.com/document_detail/44686.html#section-b41-0e5-nye
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。