发表于: 2020-08-11 23:34:39

1 2287


今天完成的事情:我idea的格式没错,复制到这里就是会乱。完成了自己的最后收尾工作
明天计划的事情:任务八
遇到的问题:Python编写程序进行数据迁移还没怎么学会
收获:

1.缩略图

https://help.aliyun.com/document_detail/44688.html?spm=a2c4g.11186623.2.15.544e3bc2IS7KEs#concept-hxj-c4n-vdb

阿里云中对图片处理的方式之一就有缩略图,其他还有效果,裁剪,缩放,水印等,所有的操作都会以参数形式加在图片的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文档的代码说明

https://help.aliyun.com/document_detail/47505.html?spm=a2c4g.11186623.2.33.4c18c1f6Q9Yhkq#concept-agt-jgc-kfb

我的代码实现

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


返回列表 返回列表
评论

    分享到