979
机器人
图片处理__安卓应用示例_最佳实践_对象存储 OSS-阿里云
在OssDemo中展示了上传一张图片后,各种不同的处理。和下载不同的地方是:
- 使用的是图片处理的Endpoint。
- 在Object后面带了一些处理参数。
图片加水印
调用逻辑
- 上传一张图片到OSS,在默认的情况下bucket是sdk-demo,object是test,OSS的Endpoint是
oss-cn-hangzhou.aliyuncs.com
。 - 根据不同的图片处理方式,在test后面加不同的处理参数,以展示不同的显示效果。
- 选择后OssDemo在获取sts_server的地址后,发送请求。
- sts_server返回AccessKeyId、AccessKeySecret、SecurityToken、Expiration。
- OssDemo获取这些信息后,调用SDK,构建OssClient,进行下载操作。呈现的效果就是图片处理的效果。不过图片服务的Endpoint是
img-cn-hangzhou.aliyuncs.com
。
具体代码
- 点击更多后,到了图片服务处理图片后的页面。
将之前上传的图片,在右下角加水印,并且大小为100,获取这样的操作命令。
函数实现片段:在ImageService类中
提供了这样的一个方法,主要是在原来的object后增加相应的功能需要的参数
//给图片打上文字水印,除了大小字体之外其他都是默认值,有需要更改的可以参考图片服务文档自行调整
public String textWatermark(String object, String text, int size) {
String base64Text = Base64.encodeToString(text.getBytes(), Base64.URL_SAFE | Base64.NO_WRAP);
String queryString = "@watermark=2&type=" + font + "&text=" + base64Text + "&size=" + String.valueOf(size);
Log.d("TextWatermark", object);
Log.d("Text", text);
Log.d("QuerySyring", queryString);
return (object + queryString);
}
调用SDK的下载接口,进行图片处理。
函数实现片段:getImage(imageService.textWatermark(objectName, "OSS测试", 100), 0, "右下角文字水印,大小100");
public void getImage(final String object, final Integer index, final String method) {
GetObjectRequest get = new GetObjectRequest(bucket, object);
Log.d("Object", object);
OSSAsyncTask task = oss.asyncGetObejct(get, new UICallback<GetObjectRequest, GetObjectResult>(uiDispatcher) {
@Override
public void onSuccess(GetObjectRequest request, GetObjectResult result) {
// 请求成功
InputStream inputStream = result.getObjectContent();
Log.d("GetImage", object);
Log.d("Index", String.valueOf(index));
try {
//防止超过显示的最大限制
adapter.getImgMap().put(index, new ImageDisplayer(1000, 1000).autoResizeFromStream(inputStream));
adapter.getTextMap().put(index, method + "n" + object);
//需要根据对应的View大小来自适应缩放
addCallback(new Runnable() {
@Override
public void run() {
adapter.notifyDataSetChanged();
}
}, null);
}
catch (IOException e) {
e.printStackTrace();
}
super.onSuccess(request,result);
}
这里省略了对下载结果失败的处理,可以参考源码中的onFailure的处理。
图片缩放、裁剪、旋转
和加水印的过程类似,在ImageService中增加获取处理命令的函数,以”object + 处理参数“的形式返回,最后调用SDK的Get Object接口来处理。
//缩放
getImage(imageService.resize(objectName, 100, 100), 1, "缩放到100*100");
//裁剪
getImage(imageService.crop(objectName, 100, 100, 9), 2, "右下角裁剪100*100");
//旋转
getImage(imageService.rotate(objectName, 90), 3, "旋转90度");
最后更新:2016-11-23 16:04:10
上一篇:
使用已经搭建好的应用服务器__安卓应用示例_最佳实践_对象存储 OSS-阿里云
下一篇:
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
监控项介绍__性能监控_用户指南(Linux)_数据管理-阿里云
官网购买__购买渠道_购买指南_云服务器 ECS-阿里云
查询域名配置__配置操作接口_API 手册_CDN-阿里云
移出ECS实例__触发任务_用户指南_弹性伸缩-阿里云
新建虚拟边界路由器__高速通道相关接口_API 参考_云服务器 ECS-阿里云
体育赛事_阿里云帮助中心-阿里云,领先的云计算服务提供商
解除API与多个APP的授权__授权相关接口_API_API 网关-阿里云
修改只读账户密码__数据库管理_开放API_分布式关系型数据库 DRDS-阿里云
域名MX记录解析设置方法__邮箱解析_产品使用问题_云解析-阿里云
子账号授权准备__日志管理使用帮助_控制台使用帮助_消息服务-阿里云
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云