场景:
工作项序号:003 照片的自动整理分类
背景:
(1)典型用户:叶小龙(一个有点虚荣心的年轻驴友)
(2)用户的需求/迫切需要解决的问题:
a、曾经和许多有相同爱好的驴友一起出去游玩过很多地方,旅游照片非常的多,需要有个软件保存一下并能在想看的时候点开软件就能看到所有照片
b、这个软件同时还要能自动整理分类这些图片(例如按时间、地点顺序分类)
c、在朋友来家里做客聊到兴趣爱好话题时,可以点开软件向朋友(尤其女性朋友)展示这些年自己曾经游玩过的地方
(3)假设:
a、叶小龙已经会操作我们的软件Touch
b、叶小龙已经将过去拍好的旅游照片上传软件
场景:
今天是叶小龙的生日,和许多年轻人的生日一样,叶小龙邀请了众多同事、朋友到家里开party庆祝,当然也有邀请许多年轻漂亮女孩,party的核心话题在不停地转变,都是年轻人肯定会聊到空暇时间的兴趣爱好上(离不开玩),在场的一些人也是叶小龙通过一起旅游认识的朋友,他们自然而言会说到爱旅游这一兴趣爱好,便回忆并诉说起以往的旅游经历,还有那些在旅游中发生的趣事,此时作为今天主角的叶小龙便顺理成章的拿出已打开我们软件Touch的电脑展示过去曾经旅游过的地方,而软件Touch会按照时间、地点将叶小龙过去所有的旅游照片分类整理清楚并以图集的表现形式展示出来,时间、地点这些明确的索引将叶小龙曾经去过的那么多地方都清晰有条理的展现在众人面前,聊到具体开心的一件事时还可以点进图集找到当时的照片翻看甚至进入3D街景播放来展现,这让叶小龙很开心,因为他在众人面前展示了自己生活中美好的一面,分享出了自己快乐的同时也满足了自己内心那小小的虚荣心。
用例文档:
标题:照片自动分类整理功能
角色:用户(叶小龙)
主要成功场景:
只要是用我们软件的人,不管是出于怎样的原因,他们早晚都会不时的点开相册查看一下过去旅游照片的整理分类,因为这个功能也是他们要用我们软件的重要原因之一。
例:今天是叶小龙的生日,和许多年轻人的生日一样,叶小龙邀请了众多同事、朋友到家里开party庆祝,当然也有邀请许多年轻漂亮女孩,party的核心话题在不停地转变,都是年轻人肯定会聊到空暇时间的兴趣爱好上(离不开玩),在场的一些人也是叶小龙通过一起旅游认识的朋友,他们自然而言会说到爱旅游这一兴趣爱好,便回忆并诉说起以往的旅游经历,还有那些在旅游中发生的趣事,此时作为今天主角的叶小龙便顺理成章的拿出已打开我们软件Touch的电脑展示过去曾经旅游过的地方,而软件Touch会按照时间、地点将叶小龙过去所有的旅游照片分类整理清楚并以图集的表现形式展示出来,时间、地点这些明确的索引将叶小龙曾经去过的那么多地方都清晰有条理的展现在众人面前,聊到具体开心的一件事时还可以点进图集找到当时的照片翻看甚至进入3D街景播放来展现,这让叶小龙很开心,因为他在众人面前展示了自己生活中美好的一面,分享出了自己快乐的同时也满足了自己内心那小小的虚荣心。
步骤:
1.打开进入Touch软件,出现图库首界面
2.点击左侧“相册”按钮,右侧出来已经分类好的(时间、地点)具体旅游图集
3.浏览这些已经集成好的旅游照片图集(即查看照片的整理分类)
扩展场景:
用户还未用该软件添加任何照片,此时提示添加照片文件夹
用户的照片属性中不含时间、地点信息,此时不能完成照片的自动整理分类,用户需要自己手动整理分类
功能说明书:
1.该功能的开始是在选择照片文件夹读入照片的同时开始解析照片信息(注:该功能仅限于从照片属性中提取出最重要的分类依据信息并自动分类整理,而如何导入整个文件夹中的照片则请阅读”导入照片文件夹“功能、技术说明书)。
a.打开进入Touch软件,出现图库首界面
b.点击左侧“设置”按钮,右侧出来的界面中有“+添加文件夹“的按钮
c.点击”+添加文件夹“按钮,选择要添加的照片文件夹,点击”确定“完成照片文件夹的添加
2.该功能主要是从输入的照片中提取出照片信息,主要包括时间、地点(GPS)信息,然后在总体上按时间分类(月),在时间分类下再按地点具体细致分类完成照片的自动整理分类整理,同一时间段的照片放在一起,而在同一时间段下的同一地点附近的照片再放到一起。
3.该功能的结束即最后要达到的目标是将照片分类整理的结果显示在用户界面上(注:该功能仅限于将分类好的结果储存起来送给显示的人,具体显示的实现请阅读“相册界面显示”功能、技术说明书)。
a.打开进入Touch软件,出现图库首界面
b.点击左侧“相册”按钮,右侧出来已经分类好的(时间、地点)具体旅游图集
c.浏览这些已经集成好的旅游照片图集(即查看照片的整理分类)
技术说明书:
因为功能较小,所以下面有详细代码展示。
1.首先获取图片的信息(时间、地点),这部分用一个静态异步函数来实现,最后返回储存分类所需信息(时间、地点)的imageList类(包含照片路径、经度、纬度、时间成员变量):
首先要有文件夹的路径,然后找到文件夹中所有的文件,对每一个文件都确定是否是图片,是图片则通过stream流读入图片,将图片的属性和文件的基本属性都读入,图片的属性中就有所需经纬度以及拍摄时间信息(若拍摄时间为空则返回文件的修改时间),将这些信息写入返回类imageList中,同时还需把文件的基本属性中的文件路径写入返回类imageList中,来标记具体哪一张图片,此时就完成了照片信息(时间、地点)的提取。
2.根据提取出来的照片信息完成自动分类,自动分类的结果存储在ImageMonthGroups中:
先读入1中拿到的图片分类依赖信息,目前只完成了在总体上时间线的分类,是按照月为跨度分的,如上图所示,用GroupBy引用出两个函数,第一函数是确定分类“月”标准的,第二个函数是根据标准做出选择,最后写入到ImageMonthGroups中,最终的结果类ImageMonthGroups中是一个key(分类月标准)对应多个相应图片文件路径。
3.我们组技术大牛小轩轩决定这里展示一下我们最新的多语言开发功能来为其他组提供参考:
其实很简单!在Strings中新建文件夹,把文件夹名称改为所需语种的标识符,英文为:en-US,中文为:zh-CN,然后在各自的文件夹下新建资源文件(resw)写入输出即可:
4.这里还要再展示一下高斯模糊:
其实很简单!
网上有完整的高斯模糊控制模块代码,只需要Ctrl+c和Ctrl+v就可以了!
在controls文件夹下新建一个cs文件复制进去就好,然后在需要用到的地方加一句话引用就可以了!: