电子相册搭建 | 学习笔记

简介: 快速学习电子相册搭建

开发者学堂课程【视觉AI应用开发课程电子相册搭建】学习笔记,与课程紧密连接,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/749/detail/13217


电子相册搭建

 

主要内容

一、搭建电子相册

二、后端结构及功能、操作

三、前端结构及功能、操作

四、课后操作

 

一、搭建电子相册

电子相册是阿里云平台提供的算法进行图片识别,根据图片识别的结果对以上图片进行分类。

1、运行项目项目在8080端口运行网址 index.html就是主页

image.png

2、上传图片。通过点击上传或拖拽可以上传图片。

image.png

3、图片识别。例如拖拽上传的人模图,下面的图片分类运用了两类识别算法,一类是表情识别,一类是场景识别。可以通过点选不同图片看到不同的效果。有惊讶、生气的表情,以及露营户外人物等场景类别,通过这种方式可以查看图片和功能。

image.png

 

二、后端结构及功能、操作

1、后端功能

1)打开后可以看到 AlbumApplication , 这是入口函数。

image.png

(2)common 中有公共的类,常量或枚举值都可以放在中。

(3)Config 的功能为装载或数据库的配置。WebAPPconfig 功能为对静态资源如css gs以及图片做的映射。例如将static 映射到classpath:/static/ 路径下,在目录中写下格式,可以自动找到对应的资源。

(4)大部分的web 项目都是采用了mac 方式提供服务,Controller 的作用为接收web的请求,参数校验,通过接口调用得到的数据再返回前端。

image.png

(5)Service 功能为把不同的请求和服务抽样例如在本项目当中,一共有两个模块

Resource 的作用加载数据时为了简单保存数据,不做复杂的数据接入,例如持久化到数据库为了简单起见且方便学习,将数据直接保存到本地文件当中。

image.png

vision 功能是为图片的识别算法部分提供服务。

Recognizescene 函数可以用来识别图片符合哪些场景。

RecognizeExpression 函数可以用来识别人脸图片包含哪些表情。

image.png

本期将以上述两个识别的场景作为讲解内容。

6)utils 里面可以放公共的类工具函数。

2、后端操作

1)service 模块主要逻辑

controller主要实现功能,第一获取图片所有图片都是通过get all photos 获取的。通过获取分类以及标签获取图片包括通过分类获取图片列表。

image.png

第二上传文件,在其中会做几件事。第一件事要完成上传把上传的文件保存到文件当中。并调用两个识别函数,即在service 当中提到的两个函数。

image.png

注意事项通过MaltipartFile 获取的是文件的输入流,输入流只能读取一次,若重复读取会变成空。所以需要转换成ByteArrayInputStream 流,在每次用完之后可以进行reset ,在进行mark  0这时可以重新使用。ByteArrayInputStream 会将流保存在内存当中线下尽量不要用这种方法,图片较大会占用内存空间。由于上传图片可能会有重名,为了避免重名可以给图片取一个md5值作为函数名 。

image.png

resourceservice ,可以将其看做一个资源管理器,其中postconstruct predestroy 是比较特殊的两个函数,postconstruct 功能为装载bean的时候会先执行这个函数 ,之后在切入点把保存在本地的数据取出来并加载到内存里。销毁对象的时候把这些数据保存到本地文件data.json 数据中。

image.png

里面为空是由于需要停止之后再去打开才可以看到内容,停止时会执行函数。这时便可以将数据保存。

3、后端结构。

浏览器中输入json.cn 即可以看到整个数据存储结构

image.png

(1)Allimg 中是上传的图片

(2)Catemap 中将图片按两类场景进行分类,一类是场景识别一类是表情识别。

表情识别中放所有识别出来的表情如惊讶生气等,场景识别中有如户外人物运动等,这些是为了更快查询,通过分类可以快速找到某一个分类下所有的识别标签。

(3)Expressionmap 中存放的内容是表情标签中存放图片,scenemap 与其功能类似。

image.png

(4)Imglabels 存放的是反向查找的过程,通过图片识别其中具有的标签。如此可以通过不同维度的查询实现简洁删除图片而不用变动结构。

image.png

(5)Addimg 即上述讲解的上传图片如何构造结构方便查询。

image.png

(6)visionservice ,的作用是识别不同的场景和表情。将上传的图片流传到接口,可以从服务端识别场景和表情

image.png

早期版本是通过UR这种方式上传,但其中有限制必须使用 oss的对象才能够识别。

新版本则可以通过本地上传图片来识别

image.png


三、前端结构及功能、操作

index.html 就是通过网页访问照片的页面。

image.png

前端页面是通过vue 加上gallery 来实现前端的逻辑。

1、结构及功能

(1)第一部分作用为通过上传的组件实现拖拽上传和点选。组件中有不同的功能

action 的作用为显示上传的图片将要访问后端的某个接口,事件是指产生后要做什么事,后面对应的是将要执行的函数。

image.png

uploadSuccess 意为上传之后要刷新页面,添加下面的标签分类等。

(2)第二部分的作用为实现页面下方的轮廓图和列表。

image.png

v-tag 是一个自定义标签组件,对应的是表情类和场景类不同的分类不同的标签。

vue-gallery 功能为实现的自定义的标签名,可以在index 中看到。

image.png

Photos 是定义的属性,将后台取回来的数据渲染到前端的html页面中,组件有其对应的模板。

image.png

可以在模板中进行对背景图片的处理 以及事件的定义。

回到html 中,vue 是一个事件的数据流,通过数据不同的变化可以触发渲染,例如上传一张图片可以通过不同的组件进行不同的交互,下面会显示新上传的图片所具备的标签这些都是通过事件来驱动数据的变化。

image.png

mounted 定义的是事件,例如图片变化如何调用,按下不同的键要如何操作,是前一张图片还是后一张图片,定义的是方法,这些方法都在模板当中。例如点击next photo  就可以访问下一张图片页面与代码之间的变化是对应的。

image.png

vue 有自己的模板语言,可以生成一个变量,可以认为是vue 的视图,下图则是vue 的控制器部分。

image.png

data 里的数据定义的是模板当中需要用到的数据。El 后面是ID的绑定,可以将组件放在div 从而根据模版进行渲染。

2、渲染

1)v-for

在script 中,刷新页面之后可以请求接口来获取图片放在photos 属性里面。当属性出现值就会渲染模板,即通过数据触发渲染流程。把属性变动到photos 变量上就可以在script 中使用。v-for 是一个vue 的for 循环把里面取到的数据如索引位置以及图片的地址放到背景图片里来完成整个渲染过程

image.png

(2)v-tag

图片下方的标签就是v-tag 渲染的结果。

data 的作用是在处理化的时候进行渲染,可以自己定义颜色。

image.png

catmap 后面返回的是英文需要转化成汉字在页面中显示出来 

通过取随机的下标可以将其渲染成不同的颜色 

index 中的tags 就是绑定在script 中的数据。这个数据是一个两层的map 结构,所以渲染时会对两层的map 进行渲染 

3、触发

(1)不同触发的实现运用的是scrape 中的uploadsuccess 这是绑定成功之后执行的一个函数。这个函数可以执行各项逻辑,利用技术不同的组件之间进行通信定义一个虚拟的event的实例,通过把所有不同的vue 实例串联起来例如通过emit Uploadsuccess 发送事件,就是通过这个实例给其他的实例发送事件。上传成功之后要把加到图片的人模图里。

(2) customevent on 其中的on 代表接收下面的emit 传过来的uploadSuccess 事件,如果得到了uploadsuccess 事件可以通过从后端获取数据对页面进行刷新操作。

(3)refresh ,成功后要对整个tag刷新把识别出来的不同的场景标签进行刷新 

image.png

 

四、课后操作

1、把本地存储的逻辑替换为数据库存储,方便查询

image.png

2、扩充更多的识别算法,可以在文档当中实现不同的识别对图片进行美妆美型美颜等以及对文字进行识别 

相关文章
|
运维 监控 Cloud Native
SysOM 的可观测和智能监控实践
随着云原生的发展,给运维带来了什么挑战?
|
11月前
|
监控 搜索推荐 测试技术
电商API的测试与用途:深度解析与实践
在电子商务蓬勃发展的今天,电商API成为连接电商平台、商家、消费者和第三方开发者的重要桥梁。本文深入探讨了电商API的核心功能,包括订单管理、商品管理、用户管理、支付管理和物流管理,并介绍了有效的测试技巧,如理解API文档、设计测试用例、搭建测试环境、自动化测试、压力测试、安全性测试等。文章还详细阐述了电商API的多样化用途,如商品信息获取、订单管理自动化、用户数据管理、库存同步、物流跟踪、支付处理、促销活动管理、评价管理、数据报告和分析、扩展平台功能及跨境电商等,旨在为开发者和电商平台提供有益的参考。
310 0
|
数据采集 机器学习/深度学习 数据可视化
Pandas在数据分析中有广泛的应用场景
Pandas在数据分析中有广泛的应用场景
387 2
|
API UED
逆向海淘代购集运系统方案:lete淘宝代购集运系统丨1688代采系统
**淘宝代购集运系统**整合多平台商品资源,提供代购、仓储、国际运输一站式服务。通过API接口实现商品实时同步,支持多种支付方式与国际物流,确保用户跨地域便利购物。系统涵盖订单管理、多语言支持、客服及营销功能,通过技术创新提升用户体验和满意度。关键点包括市场定位、支付物流体系构建、用户体验优化和API集成,助力海外用户轻松购买中国商品。
什么是 CSRF?如何防止 CSRF 攻击?
CSRF 攻击是一种常见且危险的 Web 安全漏洞,攻击者可以通过伪造用户请求,执行恶意操作,作为程序员,为了防御 CSRF 攻击,常见的策略包括使用 CSRF Token、检查 Referer 或 Origin 头、设置 SameSite Cookie 属性以及双重提交 Cookie。 因为程序员对于 CSRF 攻击可以做的事情还是很有限,所以,承担主要责任的是安全部门或者运维部门,但是作为程序员,我们需要具备这些安全意识,在安全等级比较高的需求中也需要把这些安全因素考虑在内。
|
JavaScript 应用服务中间件 Apache
Linux--部署Vue项目
Linux--部署Vue项目
|
存储 安全 区块链
云上数字资产管理:解锁数字经济新蓝海,护航企业价值增长
生态化建设:数字资产管理将不再局限于企业内部,而是逐步向生态化方向发展。企业将与产业链上下游伙伴、第三方服务机构等共同构建数字资产管理生态体系,实现资源的共享和价值的共创。 结语 云上数字资产管理作为数字经济时代的重要产物,正以其独特的优势和价值引领着企业资产管理的变革和发展。面对未来的机遇和挑战,企业需要不断加强技术创新和人才培养
772 0
|
前端开发 UED
【专栏:CSS 进阶篇】CSS3 新特性:过渡、动画与变形
【4月更文挑战第30天】CSS3的过渡、动画和变形三大特性为网页设计注入活力,创造生动丰富的用户体验。过渡提供平滑效果,常用于按钮点击等;动画实现复杂动态效果,适用于滚动字幕等;变形允许元素几何变换,如旋转和缩放。实际应用包括动态导航菜单、图片轮播和加载动画。然而,需注意浏览器兼容性、性能优化和设计平衡。掌握这些特性,将为网页设计带来更多创新可能。
405 1
|
存储 安全 网络协议
文件服务器的介绍与搭建文件服务器
文件服务器的介绍与搭建文件服务器
|
数据可视化
R语言极值推断:广义帕累托分布GPD使用极大似然估计、轮廓似然估计、Delta法
R语言极值推断:广义帕累托分布GPD使用极大似然估计、轮廓似然估计、Delta法