精选30+云产品,助力企业轻松上云!>>>

实验概述

本实验以图片分享网站为原型。该网站拥有大量静态文件,作为一个图片分享平台,需要根据用户请求,实时地将用户的原图在线转换成需要的图片。本实验使用ECS作为Web服务端,使用OSS服务作为图片存储,解决了图片在线处理的问题。由于使用OSS的图片处理功能需要进行域名绑定,事先已将OSS bucket和指定的ECS Web服务器端进行域名绑定,并进行CNAME配置。配置完成后,即可通过ECS Web服务端域名访问OSS bucket保存的静态数据。

实验目标

完成此实验后,可以掌握的能力有:

  1. 使用OSS Java SDK上传图片到OSS bucket;

  2. 使用OSS Java SDK进行图片缩放和水印处理;

  3. 使用域名访问OSS bucket中的原始图片和处理后的图片。

第 1 章:实验背景

1.1 背景知识

本实验以图片分享网站为原型。该网站拥有大量静态文件,作为一个图片分享平台,需要根据用户请求,实时地将用户的原图在线转换成需要的图片。

本实验的架构使用ECS作为Web服务端,使用OSS服务作为图片存储,解决了图片在线处理的问题。由于使用OSS的图片处理功能需要进行域名绑定,事先已将OSS bucket和指定的ECS Web服务器端进行域名绑定,并进行CNAME配置。配置完成后,即可通过ECS Web服务端域名访问OSS bucket保存的静态数据。使用该架构的 优势:

1) 实时在线处理图片并返回,无需下载图片

2) 因使用域名绑定,原有未使用阿里云系统的服务端代码可直接复用

3) 流量和存储费用节省,因OSS和ECS内网交互,OSS的存储费用低于ECS磁盘费用

用户 访问过程 如下:

1)用户向 ECS Web 服务端发起页面请求,请求转发至 CDN 加速域名,读取OSS bucket返回原始图片;

2)用户在 ECS 开发服务器上使用 OSS SDK 进行图片处理;

3)用户向 ECS Web 服务端发起页面请求,请求转发至 CDN 加速域名,读取OSS bucket返回处理后的图片。

实验开始前 ,已预先完成:

1) ECS Web 服务器部署;

2) OSS 服务开通及 bucket 创建;

3) OSS bucket 和 ECS Web 服务器域名绑定; 4) ECS Web 服务器域名的 CNAME 配置为 CDN 加速域名 实验开始后,

1) 系统自动创建一台 Windows 系统的 ECS 实例作为开发服务器

2) 远程登陆到 ECS 实例的 Windows 界面。然后,修改 Eclipse 中文件,实现使用 OSS Java SDK 上传本地图片到 OSS bucket 中,并进行图片缩放和水印处理

3) 通过域名访问原始图片和处理后的图片。

4) 下载处理后的图片

第 2 章:实验详情

2.1 实验资源

在弹出的左侧栏中,点击 创建资源 按钮,开始创建实验资源。 资源创建过程需要1-3分钟。完成实验资源的创建后,用户可以通过 实验资源 查看实验中所需的资源信息,例如:阿里云账号等

2.2 上传原始图片至OSS并查看

  1. 本小节实验内容:登录开发服务器成功后,将开发服务器内的本地图片上传至阿里云对象存储OSS。

查看本地图片信息 2. 首先,用户远程登录到的ECS服务器,点击页面左侧的 实验资源 ,查看本实验提供的 图片分享网站-处 ECS服务器的 弹性IP , 用户名 和 密码 。 3. 然后,在登录的Windows 界面中,依次点击左下角的 开始 和弹出的菜单栏右侧的 计算机 ,双击 本地磁盘C:,双击并进入 LAB_OSS 的文件目录下。查看当前目录中有一个图片文件 世界地图 。

说明:远程登录Windows系统ECS实例的详细步骤,请参考云中沙箱 帮助文档 双击 世界地图 图片文件,查看待处理图片信息。打开一张地球仪的图片,该图片为 1024*1024 像素。后续的实验步骤中将通过 OSS 图片处理对该原始图片进行缩放、增加水印等操作。

2.3 网站图片缩放处理

  1. 本小节主要内容: 将阿里云对象存储 OSS 中的原始网站图片 10241024 像素缩略成 500500 像素,并通过域名访问缩放后的网站图片。

  2. 首先,请通过如下步骤,建立网站图片缩放规则。在开发服务器 Windows 桌面的 code.txt 文件中 //设置缩放参数 set thumbnail parameters 部分的代码,拷贝到WaterMark.java 对应位置。该段代码功能为:对网站图片进行缩放并生成进行缩放处理后的网站图片的 URI。

//设置缩放参数 set thumbnail parameters
String width="xxx";
String height="xxx";
String thumbnail=width+"w_"+height+"h.jpg";
String uri_thumbnail = uri+"@"+thumbnail;
System.out.println("缩略后的网站图片的URI为: "+uri_thumbnail+",请在本地浏览器中访问。 ");

修改以上代码中 width 参数值的 xxx 为 500 ,即缩略宽度是 500px ;修改 height 参数值的 xxx 为 500 ,即缩略高度为 500px,并保存。 3. 然后,点击顶层功能栏的 运行(第六个按钮),开始运行程序。弹出 Console 的程序运行界面中,若显示如下信息,则已对原图进行缩略并生成了缩略后的网站图片的 URI。 4. 最后,使用域名访问缩放后的网站图片:在本地浏览器中输入上一步 缩略后的网站图片的URI ,显示出缩略后图片。

2.4 网站图片水印处理

  1. 本小节主要内容:对阿里云对象存储 OSS 中原始网站图片打上文字水印,并通过域名访问打上水印后的网站图片。关于水印操作的说明:水印操作可以在图片上设置另外一张图片或者文字做为水印。水印类型分成图片水印,文字水印,和文图混合水印。水印都可以使用如下参数:
1)t:透明度。如果是图片水印,就是让图片变得透明,如果是文字水印,就是让水印变透明。默认值:100, 表示 100%(不透明)。取值范围: [0-100]。
2)p:位置。参数意义:位置,水印打在图上的位置。默认值:9,表示在右下角打水印。取值范围:[1-9]。
3)x:水平边距, 就是距离图片边缘的水平距离, 这个参数只有当水印位置是左上,左中,左下, 右上,右中,右下才有意义。默认值:10,取值范围:[0 – 4096],单位:像素(px)。
4)y:垂直边距, 就是距离图片边缘的垂直距离, 这个参数只有当水印位置是左上,中, 右上,左下,中下,右下才有意义。默认值:10。取值范围:[0 – 4096]。单位:像素(px)。
5)voffset:参数意义: 中线垂直偏移,当水印位置在左中,中部,右中时,可以指定水印位置根据中线往上或者往下偏移。默认值:0取值范围:[-1000, 1000]。单位:像素(px)。
6)Watermark:选择水印的类型。取值范围 1, 2, 3,1:图片水印 2:文字水印,3:文图混合水印。
  1. 本实验在图片上打文字水印,就是在原图的基础上加上一段文字内容做为水印。以下 必须编码 是指必须是 url_safe_base64_encode ——URI 安全 base64 编码。
1)text:表示文字水印的文字,内容(必须编码)。注意:必须是URL安全base64编码 encodeText =url_safe_base64_encode(fontText) 最大长度为64个字符(即支持汉字最多20个左右)。
2)type:表示文字水印的文字类型(必须编码)。
3)color:文字水印文字的颜色(必须编码)。
4)size:文字水印文字大小(px)。取值范围:(0,1000)。默认值:40。
5)s:文字水印的阴影透明度,取值范围:(0,100)。
  1. 首先,通过如下操作步骤,建立网站图片水印处理规则。打开文件 WaterMark.java ,对相关代码进行查看和修改:

1)在 第37行 ,修改 place 参数的值为 法国卢浮宫(可自定义一个地点或者景点)。完成修改,点击 保存 。此步骤是输入增加水印显示的内容。默认图片增加的水印内容为 世界这么大,我想去看看:xxxxxx 。法国卢浮宫(修改的内容)取代 xxxxx 部分的内容。 2)请将开发服务器桌面的 code.txt 文件中 //设置水印参数 set watermark parameters 部分的代码,拷贝到 WaterMark.java 对应位置中。该段代码功能为:设置水印字体、大小、文字、颜色、位置、透明度并生成进行水印处理后的网站图片的 URI。

//设置水印参数 set watermark parameters
String watermark = "watermark=2"; // watermark type, 1=pic mark, 2=text mark;
String font_type = "&type=" + BinaryUtil.toBase64String("fangzhengheiti".getBytes());
String size = "&size=" + "30";
String text = "世界那么大, 我想去看看:"+place;
text = "&text=" + BinaryUtil.toBase64String(text.getBytes());
String color = "&color=" + BinaryUtil.toBase64String("#FF0033".getBytes());
String position = "&p=" + "4";
String transparency = "&t=" + "70";
watermark = watermark + font_type + size + text + color + position + transparency;
String uri_watermark = uri +"@"+ watermark;
System.out.println("打水印后图片的URI为: "+ uri_watermark+",请在本地浏览器中访问。 ");

4. 然后,点击顶层功能栏的 运行(第六个按钮),开始运行程序。弹出 Console 的程序运行界面中,若显示如下信息,则完成对网站图片打水印。

打水印后图片的URI为: http://training.jiagouyun.com/世界地图xxxxxxx.jpg@watermark=2&type=ZmFuZ3poZW5naGVpdGk=&size=30&text=5LiW55WM6YKj5LmI5aSnLCDmiJHmg7PljrvnnIvnnIvvvJrms5Xlm73nvZfmta7lrqs=&color=I0ZGMDAzMw==&p=4&t=70,请在本地浏览器中访问。

5. 最后,使用域名访问打水印的网站图片。打开本地浏览器,拷贝并粘贴上一步中 URI 中的内容到 网址输入栏 回车,读取 OSS 中存储处理后的图片。即在原有一张地球仪的图片上,添加红色的水印文字 世界这么大, 我想去看看:法国卢浮宫 。

2.5 网站图片多重处理

  1. 本部分实验内容:为了能在一次访问中完成对图像的缩略和打文字水印两种处理,使用管道来实现多种处理任务顺序执行的机制。目前最多支持四级管道。管道的分隔符是 | 。

  2. 首先,通过管道进行图片多重处理:请将开发服务器桌面的 code.txt 文件中 //设置管道参数 set pipe parameters 部分的代码(以下灰色字体)拷贝到 WaterMark.java 对应位置中。该部分代码在一次访问中完成对图像的缩略和打文字水印两种处理。

//设置管道参数 set pipe parameters
String pipe=thumbnail+"|"+watermark;
String uri_pipe=uri+"@"+pipe;
System.out.println("通过管道访问缩略和打水印双重处理后图片的URI为: "+ uri_pipe+",请在本地浏览器中访问。 ");

3. 然后,点击顶层功能栏的 运行(第六个按钮),开始运行程序。弹出 Console 的程序运行界面中,若显示如下信息,则通过管道同时进行图片缩放和水印处理 世界地图 图片文件成功,并生成了相应处理后网站图片的 URI

通过管道访问缩略和打水印双重处理后图片的URI为: http://training.jiagouyun.com/世界地图xxxxxxx.jpg@500w_500h.jpg|watermark=2&type=ZmFuZ3poZW5naGVpdGk=&size=30&text=5LiW55WM6YKj5LmI5aSnLCDmiJHmg7PljrvnnIvnnIvvvJrms5Xlm73nvZfmta7lrqs=&color=I0ZGMDAzMw==&p=4&t=70,本地浏览器中访问。

4. 最后,使用域名访问通过管道多重处理后的网站图片:打开本地浏览器,拷贝并粘贴上一步中 URI 中的内容到 网址输入栏 回车,读取通过管道同时进行缩放和打水印后的图片。即在缩放后的 500*500 的地球仪的图片上,添加红色的水印文字 世界这么大, 我想去看看:法国卢浮宫 。

2.6 下载处理后的图片至本地并查看

  1. 本小节主要内容:将上步使用管道对 OSS 的 Bucket 中的原图进行缩放和打水印双重处理后的图片保存到本地。图片服务的下载可以通过浏览器等发送 HTTP GET 请求图片的URL 即可获得图片。

  2. 首先,下载处理后的图片至本地。请将开发服务器桌面的 code.txt 文件中 //下载图片 、 //下载文件 部分的代码(以下灰色字体)拷贝到 WaterMark.java 对应位置中。该部分代码将使用管道对 OSS 的 Bucket 中的原图进行缩放,和打水印双重处理后的图片,保存到本地的 C:/LAB_OSS 路径中,并命名为 旅行.jpg 。

注意:%7C 是管道符 | 的转义字符。

//下载图片
String uri_pipe_download=uri+"@"+thumbnail+"%7C"+ watermark;//“%7C”是管道符“|”的转义字符
downloadFile(uri_pipe_download);
System.out.println("Finished...");

以上代码中 downloadFile() 的具体实现见如下的 //下载文件 代码。具体通过以下步骤获得处理后的图片,之后存入本地文件:

1)创建 HttpGet 对象,将要请求的 URL 通过构造方法传入 HttpGet 对象。

2)使用 DefaultHttpClient 类的 execute 方法发送 HTTP GET 请求,并返回 HttpResponse 对象。

3)通过 HttpResponse 接口的 getEntity 方法返回响应信息,并以给定的文件名字 旅游.jpg 存为本地文件。

//下载文件private static void downloadFile(String uri)throws OSSException, ClientException, ClientProtocolException, IOException {//send requestsDefaultHttpClient httpClient = new DefaultHttpClient();HttpResponse response = httpClient.execute(new HttpGet(uri));System.out.println("开始从OSS下载文件...");//write to filebyte[] result = EntityUtils.toByteArray(response.getEntity());FileOutputStream fos = new FileOutputStream(new_pic_name);fos.write(result);fos.flush();System.out.println("下载成功");
}
  1. 然后,点击顶层功能栏的 运行(第六个按钮),开始运行程序。弹出 Console 的程序运行界面中,若显示如下信息,则完成下载处理后的图片并保存到本地,其名称为 旅行.jpg 。
  2. 最后,在本地查看处理后的图片信息。依次点击 Windows 界面左下角的 开始 ,和点击右侧栏的 计算机 ,在打开的 计算机 窗体下,双击 本地磁盘C:,然后,双击并进入 LAB_OSS 的文件目录下。双击 旅行 图片文件。 在打开的 旅行 图片页面中,可以查看到一张添加红色文字水印的地球仪的图片。证明已成功下载通过 OSS 处理后的 世界地图.jpg 图片,并已将其保存到本地 C:\LAB_OSS中,默认命名为 旅行.jpg 。注意其像素已被缩放至 500*500 像素。

第 3 章:课后作业

3.1 如何实现OSS Bucket域名绑定?

阿里云云计算ACP实验考试之使用OSS对图片进行基本处理相关推荐

  1. 阿里云云计算acp认证考试是什么?阿里云认证体系

    现在人们越来越注意自我素质的提升了,大家也知道在竞争激烈的现在不能再躺平,只有不断加强自我学习才能被这个社会接纳,而参加阿里云acp考试就是一种努力的方式,也是跟现下最火的云服务接洽,现在各个公司都在 ...

  2. 阿里云云计算ACP考试知识点(标红为重点)

    阿里云云计算专业认证考试(ACP)(ECS) 什么是云服务器 ECS 云服务器 Elastic Compute Service(ECS)是阿里云提供的一种基础云计算服务.使用云服务器 ECS 就像使用 ...

  3. 接下来的认证考试 阿里云云计算专业认证考试(ACP级)

    接下来的认证考试 阿里云云计算专业认证考试(ACP级) 阿里云云计算专业认证考试(Alibaba Cloud Certified Professional,ACP)是面向使用阿里云云计算产品的架构.开 ...

  4. 阿里云云计算专业认证考试(ACP级)

    阿里云云计算专业认证考试(Alibaba Cloud Certified Professional,ACP)是面向使用阿里云云计算产品的架构.开发.运维人员的专业技术认证. 考试报名后建议您提前参加阿 ...

  5. 阿里云云计算专业认证考试备考指南

    礼拜天的下午四点,查询成绩,阿里云云计算专业认证考试(Alibaba Cloud Certified Professional,ACP)通过了,非常的开心.从准备考试到考试,前前后后大概花了半个月的时 ...

  6. 阿里云云计算ACP学习---汇总

    阿里云云计算ACP 1. 阿里云整体架构 1.1 阿里云技术架构 1.2 阿里云产品架构 1.3 阿里云解决方案架构 2.ACP课程内容范围 3.ACP课程内容详解 1.弹性计算–云服务器ECS 2. ...

  7. 阿里云云计算专业认证考试(Alibaba Cloud Certified Professional,ACP)

    认证介绍 阿里云云计算专业认证(ACP级-Alibaba Cloud Certified Professional)是面向使用阿里云云计算产品的架构.开发.运维类人员的专业技术认证,主要涉及阿里云的计 ...

  8. 【云计算】阿里云云计算专业认证考试

    云计算: 云计算(cloud computing)是基于互联网的相关服务的增加.使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源.云是网络.互联网的一种比喻说法.过去在图中往往用 ...

  9. 一次通过阿里云ACA/ACP/ACE考试认证心得体会

    一.适合人群 即将毕业学生+工作者+升学+升职加薪+公司要求 需要题库的朋友可以加我V.X:To0msay 或者 QQ869255552 拿题库 二.报名考试 个人因为没有公司报销,所以选择的是从小渠 ...

最新文章

  1. 【ReactiveX】基于Golang pmlpml/RxGo程序包的二次开发
  2. 使用c#+(datagrid控件)编辑xml文件
  3. SQL 语法速成手册
  4. SpringMVC 中的异常处理
  5. Hbase 学习(三)Coprocessors
  6. CentOS 7 firewall防火墙命令
  7. 如何将外部的obj模型导入OpenGL
  8. 一个请求在Struts2框架中的处理的步骤
  9. 工作中要注意拍照录像,证明工作完成
  10. css设置背景色透明,字体颜色不透明
  11. NMDS非度量多维尺度分析
  12. iMX6ULL u-boot2021.04移植
  13. 手环的PCBA部分,主要包括一颗集成BLE功能的MCU,以及由MCU控制的各种外设
  14. 在线会议中人脸面部轮廓图像提取(三)——Dlib库人脸面部轮廓图像特征提取
  15. 理解c函数执行完后,释放内存
  16. FFmpeg滤镜:制作图片视频流(续)
  17. python文件路径path
  18. jQuery源码解析(架构与依赖模块)第一章 理解架构
  19. torch实现clip by tensor操作
  20. 工信部发证 中国广电成第四大基础电信运营商

热门文章

  1. 24小时365天不间断服务
  2. python将一个正整数分解质因数
  3. 【火炉炼AI】机器学习044-创建隐马尔科夫模型
  4. 【火炉炼AI】深度学习001-神经网络的基本单元-感知器
  5. xss基础认证钓鱼代码收集
  6. tipask 修改,临时的(暂没进行很好的全面考虑,为上线用)
  7. 以太坊拜占庭硬分叉成功!前亚马逊首席科学家加盟京东金融;俄罗斯将发法定数字货币...
  8. Echarts 学习系列(3)-Echarts动态数据交互
  9. Office Online Server 2016 安装部署笔记
  10. JAV----------数组操作