发表于: 2020-08-11 23:34:39
1 2290
今天完成的事情:我idea的格式没错,复制到这里就是会乱。完成了自己的最后收尾工作
明天计划的事情:任务八
遇到的问题:Python编写程序进行数据迁移还没怎么学会
收获:
1.缩略图
阿里云中对图片处理的方式之一就有缩略图,其他还有效果,裁剪,缩放,水印等,所有的操作都会以参数形式加在图片的URL之后。
原图的URL
https://ones-y.oss-cn-hangzhou.aliyuncs.com/%E9%82%93%E4%BC%A62.jpg
处理后的就是
https://ones-y.oss-cn-hangzhou.aliyuncs.com/%E9%82%93%E4%BC%A62.jpg?x-oss-process=image/resize,m_fill,h_100,w_100
就是用x-oss-process赋参数在后面,image是存储空间,resize是图片缩放的参数名称,后面就是具体的参数
m:缩放的模式。
- lfit:等比缩放,限制在指定w与h的矩形内的最大图片。
- mfit:等比缩放,延伸出指定w与h的矩形框外的最小图片。
- fill:固定宽高,将延伸出指定w与h的矩形框外的最小图片进行居中裁剪。
- pad:固定宽高,缩放填充。
- fixed:固定宽高,强制缩放。
w:宽度 h:高度 l:最长边 s:最短边
按比例缩放 p: 倍数百分比。小于100为缩小,大于100为放大。取值范围1-1000
下面网址是API文档的代码说明
我的代码实现
public class AliyunPictureDispose {
private String accessKeyId;
private String accessKeySecret;
private String endpoint;
public void simpleDispose(){
String bucketName = "image";
String objectName = "邓伦.jpg";
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 图片缩放。
String style = "image/resize,m_fixed,w_100,h_100";
GetObjectRequest request = new GetObjectRequest(bucketName, objectName);
request.setProcess(style);
ossClient.getObject(request, new File("example-resize.jpg"));
// 图片裁剪。
style = "image/crop,w_100,h_100,x_100,y_100,r_1";
request = new GetObjectRequest(bucketName, objectName);
request.setProcess(style);
ossClient.getObject(request, new File("example-crop.jpg"));
// 图片旋转。
style = "image/rotate,90";
request = new GetObjectRequest(bucketName, objectName);
request.setProcess(style);
ossClient.getObject(request, new File("example-rotate.jpg"));
// 图片锐化。
style = "image/sharpen,100";
request = new GetObjectRequest(bucketName, objectName);
request.setProcess(style);
ossClient.getObject(request, new File("example-sharpen.jpg"));
// 添加水印。
style = "image/watermark,text_SGVsbG8g5Zu-54mH5pyN5YqhIQ";
request = new GetObjectRequest(bucketName, objectName);
request.setProcess(style);
ossClient.getObject(request, new File("example-watermark.jpg"));
// 图片格式转换。
style = "image/format,png";
request = new GetObjectRequest(bucketName, objectName);
request.setProcess(style);
ossClient.getObject(request, new File("example-format.png"));
// 获取图片信息。
style = "image/info";
request = new GetObjectRequest(bucketName, objectName);
request.setProcess(style);
ossClient.getObject(request, new File("example-info.txt"));
// 关闭OSSClient。
ossClient.shutdown();
}
public String getAccessKeyId() {
return accessKeyId;
}
public void setAccessKeyId(String accessKeyId) {
this.accessKeyId = accessKeyId;
}
public String getAccessKeySecret() {
return accessKeySecret;
}
public void setAccessKeySecret(String accessKeySecret) {
this.accessKeySecret = accessKeySecret;
}
public String getEndpoint() {
return endpoint;
}
public void setEndpoint(String endpoint) {
this.endpoint = endpoint;
}
}
2.防盗链
防盗链功能通过设置Referer白名单,限制仅白名单中的域名可以访问您Bucket内的资源。OSS支持基于HTTP和HTTPS header中表头字段Referer的方法设置防盗链。
仅当通过签名URL或者匿名访问Object时,进行防盗链验证;当请求的Header中包含Authorization字段,不进行防盗链验证。
使用防盗链
public class aliyunBucketReferer {
private String accessKeyId;
private String accessKeySecret;
public void setReferer(){
// Endpoint以杭州为例,其它Region请按实际情况填写。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
String bucketName = "<yourBucketName>";
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
List<String> refererList = new ArrayList<String>();
// 添加Referer白名单。Referer参数支持通配符星号(*)和问号(?)。
refererList.add("http://www.aliyun.com");
refererList.add("http://www.*.com");
refererList.add("http://www.?.aliyuncs.com");
// 设置存储空间Referer列表。设为true表示Referer字段允许为空。
BucketReferer br = new BucketReferer(true,refererList);
ossClient.setBucketReferer(bucketName,br);
// 关闭OSSClient。
ossClient.shutdown();
}
public void getReferer(){
// Endpoint以杭州为例,其它Region请按实际情况填写。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
String bucketName = "<yourBucketName>";
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 获取存储空间Referer白名单列表。
BucketReferer br = ossClient.getBucketReferer(bucketName);
List<String> refererList = br.getRefererList();
for (String referer : refererList) {
System.out.println(referer);
}
// 关闭OSSClient。
ossClient.shutdown();
}
public void deleteReferer(){
// Endpoint以杭州为例,其它Region请按实际情况填写。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
String bucketName = "<yourBucketName>";
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 防盗链不能直接清空,需要新建一个允许空Referer的规则来覆盖之前的规则。
BucketReferer br = new BucketReferer();
ossClient.setBucketReferer(bucketName, br);
// 关闭OSSClient。
ossClient.shutdown();
}
public String getAccessKeyId() {
return accessKeyId;
}
public void setAccessKeyId(String accessKeyId) {
this.accessKeyId = accessKeyId;
}
public String getAccessKeySecret() {
return accessKeySecret;
}
public void setAccessKeySecret(String accessKeySecret) {
this.accessKeySecret = accessKeySecret;
}
}
3.图片迁移
我在阿里云文档看到的,提供在线迁移服务,就拿迁移到七牛云做比喻的话,只需在控制台填写源数据地址和目标 OSS 地址信息,并创建迁移任务即可。启动迁移后,您可以通过控制台管理迁移任务,查看迁移进度、流量等信息;也可以生成迁移报告,查看迁移文件列表、错误文件列表。
https://help.aliyun.com/document_detail/31883.html?spm=a2c6h.13066369.0.0.445b19fbXEj1hj
评论