毕业设计隐私照片管理.docx
- 文档编号:28403523
- 上传时间:2023-07-13
- 格式:DOCX
- 页数:23
- 大小:1.99MB
毕业设计隐私照片管理.docx
《毕业设计隐私照片管理.docx》由会员分享,可在线阅读,更多相关《毕业设计隐私照片管理.docx(23页珍藏版)》请在冰豆网上搜索。
毕业设计隐私照片管理
河 南 科 技 学 院
XXXX届本科毕业论文(设计)
论文(设计)题目:
基于iOS系统的隐私照片管理
软件设计
学生姓名:
XXXX
所在学院:
信息工程学院
所学专业:
计算机科学与技术
导师姓名:
XXXX
完成时间:
XXXXXXXX
基于iOS系统的隐私照片管理软件设计
摘要
该设计系统是以Objective-C语言为之基础,建立在Xcode7.2以及SQLite数据库的平台开发基础上的,通过将用户的图片存储到本地沙盒,兼用表格存储图片来管理图片以及附属的信息。
用户使用系统的图库也可以查看图片,该设计的作用是更加方便的管理和查看图片,并且以保护用户隐私为最重要的目的,结合用户的其他需求开发的一个软件。
软件里面包含拍照模块、图片导入模块、数据库存储图片模块、图片展示模块、搜索网络图片模块、解锁模块和个人设置模块。
这些模块主要是存储用户的图片,供用户寻找图片和保用户的隐私。
经过运行测试达到设计要求。
关键词:
隐私相册,指纹识别,手势解锁,FMDB,自定义浏览器
DESIGNPRIVACYPHOTOMANAGEMENTSOFTWARESYSTEMBYiOS
ABSTRACT
ThedesignsystemisbasedonObjective-istheClanguage,basedonXcode7.2andSQLitedatabase,onthebasisofplatformdevelopmentbytheuser'spicturesstoredinthelocalsandbox,combinationformofstoragetomanagepicturesandattachedinformation.Galleryusersusethesystemalsocanlookatthepictures,thefunctionofthedesignismoreconvenientmanagementandreviewimages,andtoprotectuserprivacyisoneofthemostimportantpurpose,combinedwiththeotheruser'sneedtodevelopasoftware.Softwarecontainspicturesmodule,imageimportmodule,databasestoragemodule,imagedisplaymodule,searchingthewebmodule,unlockandpersonalSettingsmodule.Thesemodulesismainlystoreduserimages,foruserstofindimagesandprotecttheprivacyofourusers.
Keywords:
Privacyphotoalbums,fingerprintrecognition,gesturetounlock,FMDB,custombrowser
目录
1.引言1
2.功能模块分析1
2.1功能分析1
2.2需要软件和第三方工具1
2.3系统组成2
2.3.1拍照模块2
2.3.2图片导入模块2
2.3.3数据库存储图片模块3
2.3.4图片展示模块3
2.3.5搜索网络图片模块3
2.3.6解锁模块3
2.3.7个人设置模块3
3.系统框架设计与数据库的实现4
3.1系统总框架4
3.1.1拍照模块4
3.1.2收藏图片模块4
3.1.3网页寻找图片5
3.1.4解锁设置5
3.2系统数据库的实现6
3.2.1创建一个新的相册6
3.2.2导入相片到相册中7
3.2.3删除数据库表中的某个照片8
3.2.4相片的大小统计9
3.2.5查找某一相片9
3.2.6更新某个照片对象的数据10
4.系统运行与测试11
4.1测试的重要性及目的11
4.2测试的方案12
5.总结15
参考文献17
致谢18
1.引言
该设计是用来存储用户手机拍照,平时保存的图片。
苹果手机自带的有一个图库,系统自带的图库流畅程度虽然很好,但是其自定义性和安全隐私性都比较低。
虽然苹果公司在后续的一些版本中增加了一些功能,比如图片可以隐藏功能,但是总的来说这个功能比较鸡肋,原因在于即便是隐藏了图片,其他人依然可以通过查找看到这个图片,没有隐私可言。
类似安卓的一些设置是手机可以设置用户进入访客模式,这样用户就无法看到你设置的一些隐私信息。
这个模式的弊端是很多功能无法完美使用,并且设置方式比较麻烦,无法让访客充分使用手机,这个体验很差。
根据需求,该设计是为了解决用户管理图片,并且有一定的自由和美观的界面展示图片信息,最大的功能点就是能够很好的保护用户隐私。
解锁模块里面包含了指纹解锁和手势解锁。
2.功能模块分析
2.1功能分析
该设计是以保护用户隐私的用户照片管理系统,设计的模块有拍照模块、图片导入模块、数据库存储图片模块、图片展示模块、搜索网络图片模块、解锁模块和个人设置模块。
让用户更加方便隐私的保存自己的图片,并且提供友好的展示图片信息界面,使用数据库来存储图片,让用户数据更加安全可靠。
系统功能模块分为七大模块,首先是拍照模块,这个模块可以使用苹果的摄像头调用接口来自定义界面。
图片导入模块是因为如果用户香葱本地导入图片,那么需要有这么一个接口。
使用CollectionView和瀑布流的方式来展示图片。
在CollectionView中点击cell进入选择图片的界面,在这里会让用户选择导入的图片。
选择图片也是需要自定义一个多选的图库信息。
用户如果想看一些自己喜欢的图片,那么需要给用户提供可以编辑选择哪张照片的功能,并且将这些图片通过瀑布流等方式展示出来。
用户如果不从本地系统导入,可以选择从浏览器中寻找图片,这样需要自定义一个内置的浏览器方便用户搜索图片。
本设计最大的功能是为了保护用户照片隐私,那么需要设置密码,密码方式如果使用指纹解锁那么就还需要一个备用的手势解锁或者数字解锁。
当然这些主功能满足条件了还需要一个个人设置界面,用来设置用户信息以及是否选择是否指纹识别等等。
2.2需要软件和第三方工具
需要使用Objective-C为主要语言,使用Xcode工具作为开发工具,Xcode有很多辅助开发软件应用程序、框架、数据库、开发包以及设备驱动等程序。
如果使用Xcode和MacOSX里众多工具协同合作,那么你的开发效率会更加高效的。
Xcode提供的多个主流模拟器也是足够你的开发使用。
Xcode提供的友好且方便的开发体验,使得很多新入门的开发者更加兴趣盎然。
第三方工具使用了FMDB来管理图片数据,创建了多个表,每个表中使用了图片名称为关键字来供多个表进行关联。
比如基础表1和喜欢表通过图片名称关联后可以将基本图片中的用户标记为喜欢的图片展示到收藏模块中。
FMDB是苹果移动开发平台iOS的一个SQLite数据库的封装的集大成者。
它以OC的这种处理方式封装成了一个优秀的API。
FMDB有三个功能类,那就是FMDatabase。
单个的FMDatabase对象就是一个独立的SQLite的数据库,可以用它来操作SQL语句。
而FMResultSet这个类,是FMDatabase被使用了查询以后的结果的集合。
FMDatabaseQueue则是被用来在多线程中能够执行多方面的更新或者数据的查询工作,在线程方面它是很安全的。
在操作一个数据库的时候,需要把这个数据库打开,在处理资源的过程中如果没有权限,就无法创建或者打开数据库的操作。
iOS移动端的数据库操作的基本命令和其他数据库的操作类似,都有增删改查等操作,包括SELECT、CREATE,UPDATE,INSERT,ALERT等等。
如果需要展示指纹解锁还需要真机一部,至少是5S的手机,带有指纹识别按钮。
当然如果拍照,也需要真机展示,不然无法打开摄像头。
2.3系统组成
2.3.1拍照模块
用户可以选择从本地导入图片,也可以选择从相机拍照获取图片。
拍照模块使用了苹果提供的硬件设备接口,该设计是自定义了一个相机,用户在拍照结束后可以选择是否保存该图片。
如果点击了保存,那么会把这张图片保存到本地沙盒对应的文件夹中。
而且还会把图片的信息对应的记录到数据库的表中,方便用来存取或者修改。
拍照模块是用户图片的一个来源,但不是唯一来源,因为还可以从本地获取图片并保存到该应用对应的沙盒当中。
设计的需求可以把照片设置路径为该设计沙河路径,这样直接保存到沙盒中就可以读取显示,不需要从系统相册中读取信息。
2.3.2图片导入模块
用户如果选择从本地导入图片,那么需要点击添加照片的按钮,从本地选择图片进行添加。
因为苹果自带的一个功能是只能选择一张照片,那么这里使用了苹果的图片接口,自定义了一个多选图片的功能模块。
可以从本地读取所有图片,并从这些图片中设置可以进行多选。
2.3.3数据库存储图片模块
该设计使用的是SQLite这个轻量级的移动端使用的数据库来管理图片以及信息。
具体到代码层面使用了FMDB具体进行数据库的增删改等操作。
用户还可以收藏图片,这些图片在数据库中会记录下来,并且通过瀑布流或者循环滚动视图的方式来展示给用户。
2.3.4图片展示模块
图片展示方式有很多,可以通过循环滚动视图,也可以通过瀑布流等方式。
循环滚动视图有一个弊端就是无法一次展示多张图片,而我们这里需要的是同时展示很多图片供用户进行浏览观看。
所以CollectionView设计的瀑布流是一个很好的选择。
2.3.5搜索网络图片模块
用户可以通过摄像头直接拍照,可以从本地读取图片存储到沙河中使用数据库进行管理,还可以从网络上搜索图片。
所以,这里设置了一个自定义浏览器内置到设计中来供用户从网络上寻找合适图片。
并且,用户可以下载搜索到的图片到本地,非常方便。
2.3.6解锁模块
该设计为了保护用户隐私,设置了一个解锁模块。
这个模块用户可以选择两种方式的一种进行解锁设置。
一种是指纹解锁,一种是手势解锁。
指纹解锁的优势在于可以迅速解锁,并且密码不易直接暴漏出来,但是一个弊端是在手湿的情况下不能很好的有效的解锁,那么这个时候需要有一个备用的解锁方式,该设计采用手势解锁来作为指纹解锁的备用解锁方式。
当然,用户也可以直接使用手势解锁,它的弊端就是容易被人直观的看到密码。
2.3.7个人设置模块
个人设置模块是每个设计都要有的一个模块。
在这个模块,我们需要为用户提供指纹解锁方式、更改手势密码以及找回密码等功能。
这样方便用户进行选择和自定义。
3.系统框架设计与数据库的实现
3.1系统总框架
该设计包含了图片展示、收藏图片、网页寻找图片、解锁设置等四大部分。
模块框架图如下图3-1显示。
图3-1系统总框架
3.1.1拍照模块
拍照模块用户可以设置是否设置暗门。
如果设置暗门,那么进入设计就是显示一个摄像头拍照的界面。
这个是自定义的界面,里面包含拍照、点击查看所拍照片、长按查看按钮能够进入解锁页面、调整闪光灯和焦距等信息。
也可以通过按着屏幕做放大动作,这样对焦距进行调整。
如图3.1.1所示,如果用户在解锁界面有问题,或者不想输入密码了就可以选择退出输入密码界面,这个时候回退回到拍照页面。
图3-1-1拍照模块
3.1.2收藏图片模块
用户需要先去设置哪些图片需要设置收藏。
在点开的相册时候,通过CollectionView来展示这个相册所有图片,点击查看图片的时候会有选择收藏的按钮,点击了就可以将该图片信息保存到数据库。
结构图如3-1-2所示。
图3-1-2收藏模块
3.1.3网页寻找图片
用户使用这个可以直接搜索图片,也可以通过通过内置的四个图片网站的链接来寻找图片。
结构图如3-1-3所示,找到图片后长按可以选择将图片保存到本地。
图3-1-3网页寻图
3.1.4解锁设置
用户先要设置是否打开指纹解锁。
如果使用指纹解锁,那么需要两个解锁机制,即指纹解锁和备用的手势解锁机制。
整个结构图如3-1-4所示。
图3-1-4解锁设置
3.2系统数据库的实现
3.2.1创建一个新的相册
使用者能够很简单的创建一个新的相册,来存放从本地导入的或者从摄像头刚刚拍摄的图片,这个相册中还可以选择喜欢,或者展示该图片拍摄时候的很多细节。
比如,拍摄照片信息中可以包含拍摄地点、拍摄当天的天气,以及拍摄的当天场景等等。
具体代码如下。
+(BOOL)createTable
{
FMDatabase*db=[FMDatabasedatabaseWithPath:
[FCLDBHelperdbPath]];
if(!
[dbopen]){
NSLog(@"数据库打开失败!
");
returnNO;
}
NSString*tableName=[[NSUserDefaultsstandardUserDefaults]objectForKey:
@"currentTableName"];
NSArray*properties=[dictobjectForKey:
@"name"];
//过滤数组
NSArray*resultArray=[propertiesfilteredArrayUsingPredicate:
filterPredicate];
for(NSString*columninresultArray){
NSUIntegerindex=[propertiesindexOfObject:
column];
NSString*sql=[NSStringstringWithFormat:
@"ALTERTABLE%@ADDCOLUMN%@",[[NSUserDefaultsstandardUserDefaults]objectForKey:
@"currentTableName"],fieldSql];
if(!
[dbexecuteUpdate:
sql])returnNO;
}
[dbclose];
returnYES;
}
3.2.2导入相片到相册中
创建一个相册后,用户可以点击添加,从本地导入照片到这个相册。
当然,限于苹果没有多选照片的功能,我们采用了自定义封装一个多选的功能。
我们可以设置当前哪个相册为存储拍摄照片的相册,这样免去来回删除照片的困扰。
在数据库中是这样实现代码如下。
-(BOOL)saveImagesToPhotoLib
{
NSString*tableName=[[NSUserDefaultsstandardUserDefaults]objectForKey:
@"currentTableName"];
NSMutableArray*insertValues=[NSMutableArrayarray];
for(inti=0;i [keyStringappendFormat: @"%@,",proname]; idvalue=[selfvalueForKey: proname]; if(! value){ value=@""; } [insertValuesaddObject: value]; } FCLDBHelper*jkDB=[FCLDBHelpershareInstance]; __blockBOOLres=NO; [jkDB.dbQueueinDatabase: ^(FMDatabase*db){ //通过tableName得到表名User,通过keyString得到所有键值,通过valueString获取占位符? ,通过insertValues来获取与键值相对应的值。 再用命令[dbexecuteUpdate: withArgumentsInArray: ]来存到沙盒中 NSString*sql=[NSStringstringWithFormat: @"INSERTINTO%@(%@)VALUES(%@);",tableName,keyString,valueString]; res=[dbexecuteUpdate: sqlwithArgumentsInArray: insertValues]; self.pk=res? [NSNumbernumberWithLongLong: db.lastInsertRowId].intValue: 0; NSLog(res? @"插入成功": @"插入失败"); }]; returnres; } 3.2.3删除数据库表中的某个照片 打开照片后,是在一个ScrollView中,这样有删除按钮,可以一键删除,当前版本中不包含垃圾箱,也就是说用户一旦删除某个照片就无法找回。 这个在后续版本中会增加垃圾箱的功能,为用户提供更加完善的用户体验。 代码如下所示。 -(BOOL)deleteObject { FCLDBHelper*jkDB=[FCLDBHelpershareInstance]; __blockBOOLres=NO; [jkDB.dbQueueinDatabase: ^(FMDatabase*db){ NSString*tableName=[[NSUserDefaultsstandardUserDefaults]objectForKey: @"currentTableName"]; idprimaryValue=[selfvalueForKey: primaryId]; if(! primaryValue||primaryValue<=0){ return; } NSString*sql=[NSStringstringWithFormat: @"DELETEFROM%@WHERE%@=? ",tableName,primaryId]; res=[dbexecuteUpdate: sqlwithArgumentsInArray: @[primaryValue]]; NSLog(res? @"删除成功": @"删除失败"); }]; returnres; } 3.2.4相片的大小统计 在相片的详细信息中会列有每个照片的具体大小,让用户对这个照片有一个直观的了解。 当然我们在存储的过程中都是使用的原图存储,在CollectionView中展示的则是缩略图,为了增加系统的流畅性和美观性,这是必要读选择。 代码如下。 -(float)fileSizeAtPath: (NSString*)filePath { NSFileManager*manager=[NSFileManagerdefaultManager]; NSString*homePath=[NSHomeDirectory()stringByAppendingPathComponent: @"Documents"]; NSString*createOrangePath=[NSStringstringWithFormat: @"%@/%@",homePath,filePath]; if([managerfileExistsAtPath: createOrangePath]){ //获取改文件夹的大小 floatfolderSize=[[managerattributesOfItemAtPath: createOrangePatherror: nil]fileSize]; returnfolderSize; }else return0; } 3.2.5查找某一相片 根据表中对应的照片的名称来查找对应的图片,非常的方便。 代码如下。 +(NSArray*)findByCriteria: (NSString*)criteria { FCLDBHelper*jkDB=[FCLDBHelpershareInstance]; [jkDB.dbQueueinDatabase: ^(FMDatabase*db){ FMResultSet*resultSet=[dbexecuteQuery: sql]; while([resultSetnext]){ FCLDBModel*model=[[self.classalloc]init]; for(inti=0;i if([columeTypeisEqualToString: SQLTEXT]){ [modelsetValue: [resultSetstringForColumn: columeName]forKey: columeName]; } } [usersaddObject: model]; } }]; returnusers; } 3.2.6更新某个照片对象的数据 -(BOOL)update { FCLDBHelper*jkDB=[FCLDBHelpershareInstance]; __blockBOOLres=NO; [jkDB.dbQueueinDatabase: ^(FMDatabase*db){ NSString*tableName=[[NSUserDefaultsstandardUserDefaults]objectForKey: @"currentTableName"]; idprimaryValue=[selfvalueForKey: primaryId]; if(! primaryValue||primaryValue<=0){ return; } NSMutableString*keyString=[NSMutableStringstring]; NSMutableArray*updateValues=[NSMutableArrayarray]; for(inti=0;i NSString*proname=[self.columeNamesobjectAtIndex: i]; if([pronameisEqualToString: primaryId]){ continue; } [keyStringappendFormat: @"%@=? ",proname]; idvalue=[selfvalueForKey: proname]; if(! value){ value=@""; } [updateValuesaddObject: value]; } //删除最后那个逗号
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业设计 隐私 照片 管理