阿里云云计算ACP实验考试之使用OSS对图片进行基本处理(下)

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000次 1年
对象存储 OSS,恶意文件检测 1000次 1年
简介: 阿里云云计算ACP实验考试之使用OSS对图片进行基本处理(下)

1)在 第37行 ,修改 place 参数的值为 法国卢浮宫(可自定义一个地点或者景点)。完成修改,点击 保存 。此步骤是输入增加水印显示的内容。默认图片增加的水印内容为 世界这么大,我想去看看:xxxxxx 。法国卢浮宫(修改的内容)取代 xxxxx 部分的内容。


20200705213228855.png

请将开发服务器桌面的 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+",请在本地浏览器中访问。 ");

20200705213256982.png


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

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


20200705213325288.png


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



20200705213345757.png


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+",请在本地浏览器中访问。 ");

2020070521350356.png


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,本地浏览器中访问。

2020070521354857.png


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


20200705213608339.png

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


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


首先,下载处理后的图片至本地。请将开发服务器桌面的 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...");

20200705214047574.png

以上代码中 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 requests
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpResponse response = httpClient.execute(new HttpGet(uri));
        System.out.println("开始从OSS下载文件...");
        //write to file
        byte[] result = EntityUtils.toByteArray(response.getEntity());
        FileOutputStream fos = new FileOutputStream(new_pic_name);
        fos.write(result);
        fos.flush();
        System.out.println("下载成功");
}

然后,点击顶层功能栏的 运行(第六个按钮),开始运行程序。弹出 Console 的程序运行界面中,若显示如下信息,则完成下载处理后的图片并保存到本地,其名称为 旅行.jpg 。


20200705214120561.png


最后,在本地查看处理后的图片信息。依次点击 Windows 界面左下角的 开始 ,和点击右侧栏的 计算机 ,在打开的 计算机 窗体下,双击 本地磁盘C:,然后,双击并进入 LAB_OSS 的文件目录下。双击 旅行 图片文件。

20200705214142295.png


在打开的 旅行 图片页面中,可以查看到一张添加红色文字水印的地球仪的图片。证明已成功下载通过 OSS 处理后的 世界地图.jpg 图片,并已将其保存到本地 C:\LAB_OSS中,默认命名为 旅行.jpg 。注意其像素已被缩放至 500*500 像素。


20200705214202112.png


第 3 章:课后作业


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

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
目录
相关文章
|
2月前
|
存储 人工智能 开发工具
AI助理化繁为简,速取代码参数——使用python SDK 处理OSS存储的图片
只需要通过向AI助理提问的方式输入您的需求,即可瞬间获得核心流程代码及参数,缩短学习路径、提升开发效率。
1451 4
AI助理化繁为简,速取代码参数——使用python SDK 处理OSS存储的图片
|
14天前
|
人工智能 运维 监控
阿里云联合中国信通院等单位发布首个云计算智能化可观测性能力成熟度模型标准
推动行业智能化落地,阿里云联合中国信通院及国内头部云厂商、观测厂商、各行业建设方,历时近 5 个月,共同编制《云计算智能化可观测性能力成熟度模型》,以规范和指导云计算环境下的智能可观测性建设实践,为企业实施云环境下的智能化可观测能力建设提供指导。
|
1月前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
2月前
|
存储 人工智能 缓存
AI助理直击要害,从繁复中提炼精华——使用CDN加速访问OSS存储的图片
本案例介绍如何利用AI助理快速实现OSS存储的图片接入CDN,以加速图片访问。通过AI助理提炼关键操作步骤,避免在复杂文档中寻找解决方案。主要步骤包括开通CDN、添加加速域名、配置CNAME等。实测显示,接入CDN后图片加载时间显著缩短,验证了加速效果。此方法大幅提高了操作效率,降低了学习成本。
5469 16
|
2月前
|
存储 人工智能 弹性计算
阿里云何川:云计算,为数据基础设施的建设提速|数据对话
中国信通院工业互联网与物联网研究所特别策划“数据对话”专题,旨在通过专家的深度分析和独特视角,回答社会关切话题,探讨前沿技术和应用趋势。
|
2月前
|
算法 Java Linux
java制作海报四:java BufferedImage 转 InputStream 上传至OSS。png 图片合成到模板(另一个图片)上时,透明部分变成了黑色
这篇文章主要介绍了如何将Java中的BufferedImage对象转换为InputStream以上传至OSS,并解决了png图片合成时透明部分变黑的问题。
111 1
|
2月前
|
存储 人工智能 弹性计算
阿里云何川:云计算,为数据基础设施的建设提速|数据对话
中国信通院工业互联网与物联网研究所特别策划“数据对话”专题,旨在通过专家的深度分析和独特视角,回答社会关切话题,探讨前沿技术和应用趋势。本期,我们邀请到阿里云弹性计算产品运营与生态合作负责人何川,围绕云计算如何加速数据基础设施建设及其未来发展趋势展开探讨。
|
3月前
|
存储 安全 小程序
什么是云计算,为什么选择阿里云?
阿里云提供的云计算服务让您能以按需、按量的方式获取算力,涵盖计算、存储、网络等多种形态,无需自建数据中心。它具备弹性、敏捷、安全、稳定、高性能和低成本等优势,支持业务快速创新,保障数据安全及业务连续性,帮助您专注于核心业务发展。常见应用场景包括网站、小程序、移动应用及大模型问答机器人等。
107 1
|
5月前
|
机器学习/深度学习 人工智能 专有云
人工智能平台PAI使用问题之怎么将DLC的数据写入到另一个阿里云主账号的OSS中
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
4月前
|
存储 机器学习/深度学习 弹性计算
阿里云EMR数据湖文件系统问题之OSS-HDFS全托管服务的问题如何解决
阿里云EMR数据湖文件系统问题之OSS-HDFS全托管服务的问题如何解决