首页 > 编程语言 >安卓APP源码和设计报告——魔幻相机

安卓APP源码和设计报告——魔幻相机

时间:2022-12-11 13:03:01浏览次数:50  
标签:功能 安卓 明度 色彩 照片 滤镜 源码 APP 图片

Android大作业

学 院 计算机科学与工程学院

专 业 计算机科学与技术一班

学生姓名

小组成员

学生学号

指导教师

课程编号

课程学分

起始日期

教师评语

教师签名:日期:

成绩评定

备注


Android大作业

魔幻相机

一、选题背景

据统计,中国目前已经有4.874亿手机用户。大部分消费者选择手机产品的首要选择之一就是手机的拍照功能、像素以及清晰度。尤其是女性人群,想要把人物等照片弄得好看又有意境。目前市场上虽然有Photoshop和Adobe Illustrator等专业图像编辑软件,但其学习门槛太高。因此我们小组制作出《美图照相机》手机android软件,为该人群提供便利。

该android软件实现了基本拍照功能、图片时间事件等分组功能、图片滤镜功能、图片色彩调节功能。用户可以随时随地使用该软件进行拍照、照片事件保存、照片滤镜修改、照片色彩修改等,轻松获得美观大方的照片以及简洁的照片分类。

二、方案论证(设计理念)

基于JDK-1.8的开发平台,运行于android API 12及以上平台,大部分android手机兼容该app。

该软件主要运用到android中的控件,异步加载,缓存等知识、java中的反射继承多态,内部类知识,色彩矩阵变换处理图像、颜色数组及颜色分量实现滤镜知识等等。

整个软件可以分成四个模块,拍照功能、照片分类功能、滤镜功能、色彩调节,图片多点触控功能。

拍照功能:

我们由于自己实现原生相机的难度较大,涉及图像处理的知识较多,我们选择android的隐式Intent来调用系统相机。

照片分类功能:

  1. 按照相片的时间进行分类
  2. 使用缓存技术
    滤镜功能:
    滤镜是指安装在相机镜头前过滤自然光的附加镜头,用来实现调色和添加效果。软件实现的滤镜可以模拟大部分的镜头滤镜,如色温变换滤镜(LB)和强调滤镜等.
    软件模拟镜头滤镜中,实现滤镜功能是对照片中的色彩进行映射的过程。且可以为照片增加光线变化(如 LOMO 的暗角效果)、叠加材质和应用相框等等等,而我们采取最基本的颜色映射方法。 颜色映射是指将原来照片中的每一种颜色,通过某种映射方法转换成另一种颜色,从而使图片显示出不同的色调,改变图片的意境。
    色彩调节功能:
    一张好的照片,除了要有好的内容外,色彩和层次感也一定要分明。有彩色系的颜色具有三个基本特性:色相、纯度(也称彩度、饱和度)、明度
    色相: 色相是有彩色的最大特征。其能够比较确切地表示某种颜色色别的名称。调节色相时会很直观看到照片显示的色调是蓝、黄或其他颜色。
    纯度: 色彩的纯度是指色彩的纯净程度,它表示颜色中所含有色成分的比例。含有色彩成分的比例愈大,则色彩的纯度愈高,含有色成分的比例愈小,则色彩的纯度也愈低。
    明度:明度是指色彩的明亮程度。各种有色物体由于它们的反射光量的区别而产生颜色的明暗强弱。色彩的明度有两种情况:一是同一色相不同明度,二是各种颜色的不同明度。
    有彩色的色相、纯度和明度三特征是不可分割的,通过改变图片的饱和度、色温、亮度来进行调节图片的色彩,从而使图片色彩饱满,别有韵味

    图片多点触控功能
    实现了图片的平移缩放等功能。具体为两指或者多组放大缩小,图片双击放大或者缩小,图片平移。
    三、过程论述
    该android 软件的实现功能共有四大模块:拍照功能、照片分类功能、滤镜功能、色彩调节,图片多点触控功能。
    Activity之间的跳转如下:
    CameraActivity
    (照相功能)
    导航:
    该模块的实现过程是:
    1.加载menu 目录下的xml文件。
    2. 使用java的反射机制,实现隐藏菜单从ActionBar下方出现以及item图标的显示。
  3. 由于代码的重复出现,代码设计成工具类。

主界面

  1. 主界面是一个滑动的界面,采用继承于HorizontalScrollView改写的控件进行布局
  2. 界面截图:

安卓APP源码和设计报告——魔幻相机_Android

安卓APP源码和设计报告——魔幻相机_滤镜_02

拍照功能:

该模块的实现过程是:

  1. 通过Intent 的隐式调用,调用其他的系统相机应用。
  2. 在OnActivityResult中处理图片;

安卓APP源码和设计报告——魔幻相机_Android_03

安卓APP源码和设计报告——魔幻相机_android_04

图片浏览功能:
1.ZoomImageView类继承于ImageView,实现了OnTouchListner等接口
2.该类包括双击缓慢放大,图像平移,多指触控等功能
3.具体表现为两指或者多组放大缩小,图片双击缓慢放大或者缩小,图片平移随手指移动。
4 、通过OnTouch事件以及Matrix(该类实现图片的缩放平移)这个类,并在缩放或平移过程中,进行边界检查
5 以下为放大图片:

安卓APP源码和设计报告——魔幻相机_Android_05

滤镜功能:
该模块实现功能是:

  1. 获取当前图片的像素值


2. 在Gallery中选则滤镜功能。

  1. 其中Gallery中的图片均经过滤镜处理后显示
  2. Gallery中可以快速滑动来选去喜欢的滤镜功能
  3. 点击边界上的图片后,其后继图片将自动移动到当前界面。
  4. 此处一共有25中滤镜特效,每种有着不同的色调计算公式。

3. 将当前图片的颜色数组及颜色分量进行相应改变

4. 获取改变后的图片并显示。

5. 如喜欢可保存在手机图库中。

如图 Figure-滤镜功能

安卓APP源码和设计报告——魔幻相机_滤镜_06

Figure 1 滤镜功能

色彩调节功能:

该模块实现功能是:

  1. 通过三条SeekBar来改变图片的色温、饱和度、明度;
  2. 获取SeekBar上长度,通过相应数学计算公式,获得相应的色相、饱和度、明度的数值;
  3. 通过色彩矩阵变换来处理图像,并显示相应图片。
  4. 调节喜欢的色调后,可保存在手机图库中。

如图figure-色彩调节:

安卓APP源码和设计报告——魔幻相机_滤镜_07

Figure 2色彩调节

照片分类功能:

1.ListViewAdapter继承BaseAdapter,为相册主界面的ListView提供数据源,每一个子项有一个TextView和GridView分别用于显示时间和分类好的图片。

2.PhotoAdapter继承ArrayAdapter,为GridView提供数据源,每个子项有一个ImageView,用于显示图片。

3.在GridView中使用AsyncTask异步加载图片。

安卓APP源码和设计报告——魔幻相机_Android_08

  1. 课程设计总结

1.本次课程设计,我主要负责主界面以及图片展示部分以及ActionBar的编写。

  1. 通过本次课程设计,我更好的掌握了Android基本控件的应用以及Android布局的编写。
  2. 学会合团队作,动手能力得到加强。
  3. 对Android自定义空间有了更深刻的理解和改写能力,阅读源代码的能力进一步得到提高。
  4. 对Android各种View都有一定的了解,对View的内部机制包括测量(onMeasure) 布局(onLayout)绘制(onDraw)有了了解

参考文献

[ 1 ] 《Java开发手册》.桂颖, 谷涛.电子工业出版社

[ 2 ] 《Android 第一行代码》.郭霖 电子工业出版社

[ 3] 《java核心技术》.Cay S.Horstmann Gary Cornell .机械工业出版社

[ 4] Android 官网教程 网址:http://hukai.me/android-traini

标签:功能,安卓,明度,色彩,照片,滤镜,源码,APP,图片
From: https://blog.51cto.com/u_15681752/5928245

相关文章

  • Android Study 之 如何通过Data Binding提升撸码逼格(高级篇 - 简单阅读源码)
    LZ-Says:洗个澡,突然感觉爽到爆~~~又回来了哦~前言前几天,终于完善了关于DataBinding基础篇以及进阶篇博文编写,过程很是艰难哦~下面附上链接地址:​​AndroidStudy之如何......
  • 安卓APP源码和设计报告(含PPT)——订餐系统
    订餐系统实验报告课程名称:Android程序设计班级:学号:姓名:任课教师:程序功能与环境(服务器,手机实物照片,自己拍)程序功能餐厅订餐系统服务器,提供订餐服务餐厅订餐系统客户端,用......
  • MVVM 源码封装绑定封装
    系列博文目录截图:这个博主有很多WPF自定义控件与样式一系列的​​博文​​里面有他自己封装的mvvm实现代码,如果只想用简单的绑定可以用他的这个源码。......
  • 多阶段渐进式图像恢复—去雨、去噪、去模糊—有效教程(附源码)|【CVPR 2021】
    版权:本文由【墨理学AI】原创、感谢查阅❤️如果文章对你有帮助、欢迎一键三连????该博文旨在带你了解如何使用深度学习进行图像恢复【去雨、去噪、去模糊】,【❤️基准测试......
  • AppleScript发送邮件
    实现效果弹出对话框,输入收件人。弹出对话框,输入收件人邮箱。点击确认,发送邮件。代码--弹出对话框,输入收件人setnameDialogtodisplaydialog"请输入收件人:"de......
  • C++学习---cstdio的源码学习分析04-创建临时文件函数tmpfile
    cstdio中的文件操作函数stdio.h中定义了文件删除函数remove,文件重命名函数rename,创建临时文件函数tmpfile,生成临时文件名函数tmpnam。接下来我们一起来分析一下tmpfile对应......
  • iOS上架辅助软件Appuploader
    iosapp上架流程上架基本需求资料1、苹果开发者账号(如还没账号先申请-苹果开发者账号申请教程)2、开发好的APP通过本篇教程,可以学习到ios证书申请和打包ipa测试上架的完整流程......
  • uniapp+unicloud开发微信小程序流程
    注册微信小程序首先需要注册一个微信小程序,个人或者企业都可以,别忘记下载微信开发者工具哦获取微信小程序APPID登录微信小程序后台,在开发-开发管理-开发设置当中的开发......
  • appium环境搭建(从入门到放弃)
    一.appium环境搭建1.python3python3的下载安装这里就不多做介绍了,当然你也可以选择自己喜欢的语音,比如java....2.jdk1)下载地址官网(需登录账号):https://www.oracle.c......
  • 深入解析 JavaScript 中 apply 方法原理
    前言大家好,我是 CoderBin,在面试当中,手撕代码的场景屡见不鲜,手写JS当中的方法更是最常见的一种,所以本文将全面的,详细解析​​apply​​方法的实现原理,并手写出自己的​​a......