admin管理员组

文章数量:1122851

阿里OSS图片持久化,裁切,缩放,格式转换等

用过阿里oss图片管理的都知道,它不但能存储图片,还提供图片的处理工具如裁切,缩放,格式转换等,但是 有一个需求是,我们把原图进行裁切,或者缩放又或者格式转换后,还继续保存到oss上怎么办,这个问题我问oss的客服人员他给我说,先把图片下载下来处理完之后在上传oss 这是他给我的工单回复,我差点没吐血,oss下载上传都需要流量费的一来一回多少钱,后来我知道 oss官方有一个持久化功能,重要事情说三遍 oss持久化 , oss持久化 , oss持久化 为什么持久化,因为你把原图上传到 oss之后 在访问的时候,进行缩放 ,裁切水印 格式转换一系列操作,当然很简单你只需传参数就可以,但是有一些尺寸比较大的图片 你实时访问每次都这样会很占时间,所以才会有持久化,把些操作一次处理好 ,放到oss上

直接上源码: 当然你可以在oss官方文档上去找 也有,但是很多人不知道.

 

 

OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
// 图片处理持久化 : 裁切
StringBuilder sbStyle = new StringBuilder();
Formatter styleFormatter = new Formatter(sbStyle);
String styleType = "image/crop,w_500,h_900,g_center";
styleFormatter.format("%s|sys/saveas,o_%s,b_%s", styleType,BinaryUtil.toBase64String(targetImage.getBytes()),BinaryUtil.toBase64String(bucketName.getBytes()));
ProcessObjectRequest request = new ProcessObjectRequest(bucketName, sourceImage, sbStyle.toString());
GenericResult processResult = ossClient.processObject(request);
String json = null;
try {json = IOUtils.readStreamAsString(processResult.getResponse().getContent(), "UTF-8");processResult.getResponse().getContent().close();JSONObject jsonObject = JSON.parseObject(json);jsonObject.getString("status");
} catch (IOException e) {log.error("OSS存储封面图报错 结果" + json);e.printStackTrace();
} finally {// 关闭OSSClient。new Thread(new Runnable() {public void run() {ossClient.shutdown();}}).start();
}

本文标签: 阿里OSS图片持久化裁切缩放格式转换等