独立双端App《瓦格相机》的开发过程分享

2024-09-06 22:58

本文主要是介绍独立双端App《瓦格相机》的开发过程分享,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

Hello大家好,我是灯灯,独立开发者灯灯,也是天天学藏语的灯灯,哈哈哈...
好了屁话少说,今天和大家分享一下最近自己独立制作一款应用的经验历程,希望能对刚刚起步的新手们、还有独立开发者们有所帮助。

什么样的应用

我想做的是一款能够将照片转换成文字拼成的图片应用,也就是,图片中的每一个像素点都将会被文字取代,同时对应色彩、密集程度等。
之所以想做这样的应用是因为早在我高中的时候,我就用VB做过一个类似的应用,当时朋友们很喜欢,经常问我要这个软件。如今PC时代已经离我而去,自然就想在移动平台也做一个。
其实之前我已经用Python脚本写了一个,效果还算不错,大家可以前往使用:
图片转文字Python版本GitHub

构思与设计

软件的需求很简单,因为是自己独立开发而且软件结构比较简单,就没有设计流程图之类的。
初步构思,软件只有几个界面:

  • 首页:让用户打开图片或者拍照
  • 素材库:瀑布流,提供一些素材
  • 裁剪:让用户对图片进行裁剪
  • 设置:让用户对要生成图片的文字进行输入
  • 生成:得出结果,保存、社交分享

所以整体还是很简单的,核心技术肯定是生成页面,其余只是布局和第三方开源库(原谅我这么懒)的问题。
然后,设计师登场(还是我)。
我不怎么会用Sketch,于是还是用PS进行设计,一开始想采用唯美清新文艺小青年风格,整体浅绿色调,给人一种马卡龙配色的感觉。等我设计完,在不同手机查看的时候发现由于色温关系,不同手机显示效果差异极大,非常恶心。
一怒之下重新设计,这一次决定采用白色、橙色为主色调的卡通风格。


效果图


图标是自己用PS绘制的,采用了MBE风格,形象就是一只照相机...
至于名字,我一贯地总是想到什么就是什么。

技术方案

设计完后没有急着立马动手,先想了下每个页面的技术方案。

  • 首页:毫无难度
  • 素材库:collectionView,自己再写个简单的php接口
  • 裁剪:不会,求救GitHub开源库,我坚信一定有很多
  • 设置:毫无难度
  • 生成:算法已经用Python做过了,照搬就行了
  • 分享:友盟或者ShareSDK

于是,经过我在GitHub上苦苦的搜寻,和一遍遍地Demo尝试,最终确定下来用这些开源库:

  • 安卓:
    android-gif-drawable 用来显示Gif加载动画
    SimpleCropView 用来裁剪照片
    PhotoView 用来全屏显示图片
    ShareSDK 用来分享,友盟的AndroidStudio不支持
  • iOS:
    TKImageView 用来裁剪照片
    UIImage-Resize 用来缩放图片
    uiimage-from-animated-gif 用来显示加载动画
    友盟分享 社交分享

着手开发

这一次我没有先选择开发iOS端(以往总是先做iOS),选择了先做Android,原因是一开始测试核心代码的时候iOS没有写成功,安卓成功了。
先把PS设计图用CutterMan(切图神器)生成切图,然后就动手开发。
安卓端使用AndroidStudio开发,一遍遍构建Activity,构建xml布局,码字、测试...
遇到的棘手问题又:

  • 图像在Activity间的传递问题,我转换成bytes传递,经常发生崩溃的情况,不得已全部将图片压缩后再传输,知道原因的朋友可以留言告诉我下。
  • 像素读取的时候的横竖问题,x和y轴总是搞反,大家可以参考python版代码看下到底该如何写宽高。
  • ShareSDK的集成问题,由于不需要它的UI,采用直接分享接口,数据传递遇到了很多bug,总之,在AndroidStudio上,友盟和sharesdk都一塌糊涂,大家慎用。

安卓端基本做完后,着手开发iOS,第一步还是去解决核心图像算法,这一次终于成功解决,而且iOS生成的图片效果要比安卓好得多,不知道为什么。
iOS上的项目依赖我还是用的CocoaPods,暂时没有尝试其他的,代码采用OC。
然后开始搭建界面,我不喜欢用storyboard或者xib,所有界面都是用代码按照比例计算布局写的。
iOS上问题不大,比起安卓反而容易,前前后后安卓和iOS双端总共花了3天左右的时间完成。

上线之前的准备

不是开发完了就能发布的,还有很多很多事情要做。

  • 制作应用预览图(宣传图)
  • 申请分享需要的AppKey,包括微信、QQ、新浪
  • 制作简单的应用官网
  • 制作素材库需要的php接口

好在做这些事情已经得心应手,申请AppKey的过程提醒下大家:新浪最麻烦,需要demo、官网,其他的不需要demo和官网。


宣传图


自适应的“官网”,也就是下载页面 www.winterfeel.com/vug:


手机版官网

针对官网补充一些技巧,因为微信是无法直接下载apk和跳转AppStore的,所以在JS代码中我进行了检测,如果发现是微信,则弹出一个提示,引导用户用浏览器打开进行下载。

php接口由于接口简单,只是一个查询返回json,我就只用了原生php写了个select语句,没有采用任何框架。

结束的话

至此,这款小小的独立App已经差不多开发完成了,然后就是提交给各大应用商店以及苹果了,苹果总是很顺利的发布,安卓我就不想多说了,只上了应用宝和360。
整个软件可以说是很简单的小应用,但是开发中涉及到的问题还是很多的,尤其是作为独立开发者,所有的一切都得自己做的时候,还是很麻烦的。
我想,除了我这样闲的没事做的人应该也没有多少人会去做这样的一个应用吧,毕竟做完也没几个人下载,哈哈,毕竟

大四不考研,天天像过年

如果整个历程能够对大家所有帮助的话,希望大家支持下这个独立小应用。
如果你也喜欢自己做程序,如果你有好想法、缺伙伴,交个朋友一起玩!


个人微信,添加注明简书

瓦格相机 - 官方网站 欢迎大家下载试玩
GitHub Python版代码

这篇关于独立双端App《瓦格相机》的开发过程分享的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

SpringBoot整合Sa-Token实现RBAC权限模型的过程解析

《SpringBoot整合Sa-Token实现RBAC权限模型的过程解析》:本文主要介绍SpringBoot整合Sa-Token实现RBAC权限模型的过程解析,本文给大家介绍的非常详细,对大家的学... 目录前言一、基础概念1.1 RBAC模型核心概念1.2 Sa-Token核心功能1.3 环境准备二、表结

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

Jvm sandbox mock机制的实践过程

《Jvmsandboxmock机制的实践过程》:本文主要介绍Jvmsandboxmock机制的实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、背景二、定义一个损坏的钟1、 Springboot工程中创建一个Clock类2、 添加一个Controller

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示

python多线程并发测试过程

《python多线程并发测试过程》:本文主要介绍python多线程并发测试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、并发与并行?二、同步与异步的概念?三、线程与进程的区别?需求1:多线程执行不同任务需求2:多线程执行相同任务总结一、并发与并行?1、

Python处理大量Excel文件的十个技巧分享

《Python处理大量Excel文件的十个技巧分享》每天被大量Excel文件折磨的你看过来!这是一份Python程序员整理的实用技巧,不说废话,直接上干货,文章通过代码示例讲解的非常详细,需要的朋友可... 目录一、批量读取多个Excel文件二、选择性读取工作表和列三、自动调整格式和样式四、智能数据清洗五、

JavaScript实战:智能密码生成器开发指南

本文通过JavaScript实战开发智能密码生成器,详解如何运用crypto.getRandomValues实现加密级随机密码生成,包含多字符组合、安全强度可视化、易混淆字符排除等企业级功能。学习密码强度检测算法与信息熵计算原理,获取可直接嵌入项目的完整代码,提升Web应用的安全开发能力 目录

MybatisPlus3.3.1整合clickhouse的过程

《MybatisPlus3.3.1整合clickhouse的过程》:本文主要介绍MybatisPlus3.3.1整合clickhouse的过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定... 前言ClickHouse是俄罗斯Yandex发布的一款数据分析型数据库支持sql语法,详情可以访问官网,

JDK9到JDK21中值得掌握的29个实用特性分享

《JDK9到JDK21中值得掌握的29个实用特性分享》Java的演进节奏从JDK9开始显著加快,每半年一个新版本的发布节奏为Java带来了大量的新特性,本文整理了29个JDK9到JDK21中值得掌握的... 目录JDK 9 模块化与API增强1. 集合工厂方法:一行代码创建不可变集合2. 私有接口方法:接口

电脑系统Hosts文件原理和应用分享

《电脑系统Hosts文件原理和应用分享》Hosts是一个没有扩展名的系统文件,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应... Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应