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

news2024/9/22 20:16:57

课程设计报告书

 

Android大作业

 

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

 

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

 

学生姓名

 

小组成员

 

学生学号

 

指导教师

 

课程编号

 

课程学分

 

起始日期

 

教师评语 教师签名:日期:

成绩评定 

备注 

Android大作业

 

魔幻相机

 

一、选题背景

 

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

 

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

 

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

 

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

 

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

 

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

 

拍照功能:

 

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

 

照片分类功能:

 

按照相片的时间进行分类

使用缓存技术

滤镜功能:

滤镜是指安装在相机镜头前过滤自然光的附加镜头,用来实现调色和添加效果。软件实现的滤镜可以模拟大部分的镜头滤镜,如色温变换滤镜(LB)和强调滤镜等.

软件模拟镜头滤镜中,实现滤镜功能是对照片中的色彩进行映射的过程。且可以为照片增加光线变化(如 LOMO 的暗角效果)、叠加材质和应用相框等等等,而我们采取最基本的颜色映射方法。 颜色映射是指将原来照片中的每一种颜色,通过某种映射方法转换成另一种颜色,从而使图片显示出不同的色调,改变图片的意境。

色彩调节功能:

一张好的照片,除了要有好的内容外,色彩和层次感也一定要分明。有彩色系的颜色具有三个基本特性:色相、纯度(也称彩度、饱和度)、明度

色相: 色相是有彩色的最大特征。其能够比较确切地表示某种颜色色别的名称。调节色相时会很直观看到照片显示的色调是蓝、黄或其他颜色。

纯度: 色彩的纯度是指色彩的纯净程度,它表示颜色中所含有色成分的比例。含有色彩成分的比例愈大,则色彩的纯度愈高,含有色成分的比例愈小,则色彩的纯度也愈低。

明度:明度是指色彩的明亮程度。各种有色物体由于它们的反射光量的区别而产生颜色的明暗强弱。色彩的明度有两种情况:一是同一色相不同明度,二是各种颜色的不同明度。

有彩色的色相、纯度和明度三特征是不可分割的,通过改变图片的饱和度、色温、亮度来进行调节图片的色彩,从而使图片色彩饱满,别有韵味

 

图片多点触控功能:

实现了图片的平移缩放等功能。具体为两指或者多组放大缩小,图片双击放大或者缩小,图片平移。

三、过程论述

该android 软件的实现功能共有四大模块:拍照功能、照片分类功能、滤镜功能、色彩调节,图片多点触控功能。

Activity之间的跳转如下:

CameraActivity

(照相功能)

导航:

该模块的实现过程是:

1.加载menu 目录下的xml文件。

2. 使用java的反射机制,实现隐藏菜单从ActionBar下方出现以及item图标的显示。

由于代码的重复出现,代码设计成工具类。

主界面:

 

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

界面截图:

 

a87a1e6e79f34d5c9079963c9b6f0432.webp

 

拍照功能:

baa8ffdc86eb45d9b65495e39ae4c44f.webp

 

该模块的实现过程是:

 

通过Intent 的隐式调用,调用其他的系统相机应用。

在OnActivityResult中处理图片;

 

3f4c15ce01bf4e5fa65bbfab8e0c8017.webp

 

 

图片浏览功能:

1.ZoomImageView类继承于ImageView,实现了OnTouchListner等接口

2.该类包括双击缓慢放大,图像平移,多指触控等功能

3.具体表现为两指或者多组放大缩小,图片双击缓慢放大或者缩小,图片平移随手指移动。

4 、通过OnTouch事件以及Matrix(该类实现图片的缩放平移)这个类,并在缩放或平移过程中,进行边界检查

5 以下为放大图片:

 

 

 

滤镜功能:

该模块实现功能是:

 

获取当前图片的像素值

 

 

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

 

其中Gallery中的图片均经过滤镜处理后显示

Gallery中可以快速滑动来选去喜欢的滤镜功能

点击边界上的图片后,其后继图片将自动移动到当前界面。

此处一共有25中滤镜特效,每种有着不同的色调计算公式。

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

 

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

 

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

 

如图 Figure-滤镜功能

 

 

Figure 1 滤镜功能

 

色彩调节功能:

 

该模块实现功能是:

 

通过三条SeekBar来改变图片的色温、饱和度、明度;

获取SeekBar上长度,通过相应数学计算公式,获得相应的色相、饱和度、明度的数值;

通过色彩矩阵变换来处理图像,并显示相应图片。

调节喜欢的色调后,可保存在手机图库中。

如图figure-色彩调节:

 

 

Figure 2色彩调节

 

照片分类功能:

 

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

 

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

 

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

 

 

课程设计总结

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

 

通过本次课程设计,我更好的掌握了Android基本控件的应用以及Android布局的编写。

学会合团队作,动手能力得到加强。

对Android自定义空间有了更深刻的理解和改写能力,阅读源代码的能力进一步得到提高。

对Android各种View都有一定的了解,对View的内部机制包括测量(onMeasure) 布局(onLayout)绘制(onDraw)有了了解

参考文献

 

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

 

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

 

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

 

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/79553.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[激光原理与应用-47]:《焊接质量检测》-4-普雷茨特激光焊接过程监控系统LWM分析

目录 第1章 激光焊接过程监控系统LWM概述 第2章 产品特性与功能 2.1 生产相关的信息 2.2 原始信息检测 2.3 焊接质量分析信息 2.4 缺陷报告与生产控制 2.5 LWM给客户带来的好处 2.6 适用范围 2.7 人机界面 (HMI) 第3章 焊接质量检测的原理 3.1 基本原理 3.2 技术规…

excel_阻止常数值串以科学计数法显示@数据分列@空格分隔符号分列数据

文章目录excel_阻止常数值串以科学计数法显示WPS设置某列的数据显示格式核心步骤数据-分列选择分割符设置文本类型收尾工作数据居中Office-Excelexcel_阻止常数值串以科学计数法显示 WPS 设置某列的数据显示格式 核心步骤 如果您的数据是普通数据,那么类型框里输入0就可以了…

太忙,没时间学?在职人员如何高效备考MBA?

对于很多在职人员来说,想要进一步深造提升学历,备考MBA无疑是个不错的选择。但近几年随着MBA考生人数的增长,其竞争也愈加激烈。因此想要取得好的成绩,成功上岸,不仅仅需要持续不断的努力,时间的科学管理和…

机器人与视觉,基于TCP(工具坐标)偏移

基于工具坐标系的移动偏转。 基于TCP旋转的特点在于,具有1个固定端点,多个活动端的特点。 我们在建立TCP左边偏移的时候,可以将2个点近似的模拟在同一个坐标系下 基于TCP偏转的特点在于,工作的时候,示教点与工作点的位…

CSS -- 03. CSS盒子模型

文章目录盒子模型1 盒子模型1.1 看透网页的本质1.2 盒子模型组成1.3 边框1.4 表格的细线边框1.5 边框会影响盒子实际大小1.6 内边距(padding)1.7 外边距(margin)1.8 外边距合并1.9 清除内外边距2 圆角边框3 盒子阴影4 文字阴影盒子…

netfilteriptables探讨(4)——nat的实现与使用

在之前的几篇文章中,我们讨论了netfilter与iptables的实现原理与基本用法。在netfilter&iptables的各种使用场景中,nat是最常用也是最复杂的用法之一。许多常用的网络使用模式都是通过nat iptables规则实现的,例如docker默认的bridge网络…

Netty_06_手写RPC基础版(实践类)

文章目录一、前言二、整体运行三、客户端和服务端3.1 客户端3.2 服务端3.3 RpcServerInitializer和RpcClientInitializer四、小结一、前言 常用的rpc框架:dubbo thrift gRPC rpc定义:remote proceducer call rpc目的/解决的问题: 像调用本地…

Nginx实战应用-负载均衡

在上篇文章的基础上我们再创建两个服务,三个服务的端口分别是 8081 8082 8083. 2.Nginx配置 upstream块 upstream name{…} upstream gupao{ server 192.168.12.1:8081; server 192.168.12.1:8082; server 192.168.12.1:8083; } server { location / { pr…

平均月薪15k+?自动化测试工程师?3个月教你从“点工”蜕变为“码农”

前言 一、自动化测试工程师平均收入【看图(来自职友集)】 基本收入都在15k左右,随着技术的越来越牛逼工资也就会越来越高。 我的职业生涯开始和大多数测试人一样,刚开始接触都是纯功能界面测试。那时候在一家电商公司做测试&…

[附源码]计算机毕业设计基于vue+mysql开发的考试系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

【PAT甲级 - C++题解】1092 To Buy or Not to Buy

✍个人博客:https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 📚专栏地址:PAT题解集合 📝原题地址:题目详情 - 1092 To Buy or Not to Buy (pintia.cn) 🔑中文翻译:买还是不买 &#x…

JAVA中的运算符-关系运算符

文章目录0 写在前面1 关系运算符说明2 举例3 写在最后0 写在前面 JAVA包含丰富的关系运算符,这些关系运算符最终结果一定是boolean类型。即两个结果:true false 1 关系运算符说明 符号说明ab,判断a和b的值是否相等,成立为true,…

游戏开发48课 性能优化6

3.7.2 算法优化 思路是找出最耗CPU的算法或逻辑,优化之。 空间换时间。利用预排序/预处理/缓存/动态规划等等思路换取CPU的性能。选取更快的算法。属于数据结构和算法的范畴,思路是将O(n2)降低成O(n)或O(logn),具体可以参看《算法导论》《游…

springcloud 服务消费及熔断

目录 1. 服务消费方式 1.1 RestTemplate 1.2 feign 2. 服务熔断(降级) 2.1 在微服务架构中服务熔断的必要性 2.2 hystrix 1. 服务消费方式 1.1 RestTemplate 传统情况下在java代码里访问restful服务,一般使用Apache的HttpClient。不过…

PMP内容2

PMP内容2目录概述需求:实现思路分析1.沟通管理2.监督沟通:3.风险管理4.5.实施采购控制采购相关方管理:相关方Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make …

JavaWeb语法一:进程和线程的区别与联系

目录 1.进程的概念 1.1:进程控制块抽象(PCB) 1.2:进程调度的相关属性 1.2.1:进程的状态 1.2.2:优先级 1.2.3:上下文 1.2.4:记账信息 2:进程的虚拟地址空间 3.线程…

算法与数据结构29:四边形不等式技巧

四边形不等式技巧题目一题目二题目三四边形不等式技巧题目四题目五题目一 给定一个非负数组arr,长度为N, 那么有N-1种方案可以把arr切成左右两部分 每一种方案都有,min{左部分累加和,有部分累加和} 求这么多方案中,mi…

我当PM,把ChatGPT玩冒(bà)烟(gōng)了

最近ChatGPT太火,本拐也注册了一个。用着确实是十分上头。而且事实证明,在处理明确的工程类业务时,ChatGPT可以让程序员事倍功半(也有可能饭碗不保🙈)参见: 跟着ChatGPT手把实现一个websocket连…

数据管理 Valentina Studio Pro 12.6 Crack

Valentina Studio 被描述为与 MySQL、SQL Server、Maria DB、SQLite、PostgreSQL 以及最后但并非最不重要的 Valentina DB 数据库一起用于工作流程的数据库工具的通用管理。Valentina Studio 能够允许用户和开发人员连接所有重要的数据库并运行查询,以及创建图表以了…

Hadoop如何保证自己的江湖地位?Yarn功不可没

前言 任何计算任务的运行都离不开计算资源,比如CPU、内存等,那么如何对于计算资源的管理调度就成为了一个重点。大数据领域中的Hadoop之所以一家独大,深受市场的欢迎,和他们设计了一个通用的资源管理调度平台Yarn密不可分&#x…