本人iOS程序猿,无奈现在iOS的活不多,一直在考虑着转个方向,很多可能的技术方向都在尝试中,公司里大半用RN了,我们也开始写RN的代码了。但对于个人开发来说,全新写一个APP的话,推广是一个很难的事情,现在让个用户下载一个APP越来越难了,就考虑写个小程序吧。
先放一下我的小程序入口,他们批评指教一下吧。
边学边写,发现小程序其实入门还是很简单的,做为一个小程序开发的小白,写的东西没有指导价值,大神误批啦。
首先是选题,做一个有什么用的小程序呢,想到之前曾经有一个很火的换脸P图,就从这个入手吧。
这里主要的难度就是换脸的这个AI算法,当然把这些东西都搬到小程序里是不可能的,那就只能采用API接口方式。
这个算法我可不会,网上有现成的开源的,找了很多,比较过其中一个还算比较满意的。
github最火的一个换脸的项目 https://github.com/deepfakes/faceswap ,这个是可以把两个视频中的人脸交换的。我也试了,不是我想要的(但估计很多人想要)
还有一个 https://github.com/wuhuikai/FaceSwap 这个star虽不多,但比较符合我的,而且这个也实现的视频中的转换。我需要的就是照片转换就好了。
这是一个Python的项目,我需要把这个转换成API,放到服务器上。
Python我也只是学了一点点,能看得懂代码,
使用flask框架,把这个项目封装一下
再设计一个接口
其中的app.py 入口文件大致如下
from flask import Flask,request,jsonify
from faceSwap.face_swap_entry import faceSwapTest2
app = Flask(__name__)
@app.route('/')
def index():
return "Hello, World!"
@app.route('/faceswap', methods = ["POST"])
def faceswap():
data = request.get_json() # 获取 JSON 数据
dst64 = data["image_template"]
# print(dst64)
src64 = data["image_target"]
result = faceSwapTest2(src64,dst64)
resultDic = {"error_code": 0,"error_msg":"SUCCESS","result":{"merge_image":result}}
return jsonify(resultDic)
if __name__ == '__main__':
app.run(debug=True)
封装出一个POST请求的接口,入参是两个图片的base64编码,输出替换后的图片base64
代码写好,本地测试一下没问题,就是要放到服务器上了,可是我没有服务器呀,找了半天免费的,都不好用,买吧,突然看到腾讯上有一个活动,一年只要100块的服务器,性能虽然一般啦,只要能用就行了。
买好服务器还要把Python项目部署上去,这个过程对于我这个iOS开发者来说,还是很陌生的,这个我打算单独写一个文章记录一下过程。(这里留个,等写好再发链接)
几个名词要记录一下
virtualenv、nginx、uwsgi
总体来说Python的服务器部署还不算太复杂。
部署好后,用Postman发请求试一下,OK。
接口有了现在就是要写小程序了,
可界面呢?谁来设计一个呀 ,没有设计人员呀,自己的活,自己干吧。
遇到问题不可怕,可怕的是遇到问题直接放弃,不会就学嘛,谁也不是天生就会的,设计没什么难度的,就是好看程度差一点嘛。
这里推荐一个界面设计工具 Sketch http://www.sketchcn.com
公司里也是用的这个设计工具,还有一个可以直接输出到切图的网站https://lanhuapp.com,也很方便的。
我主要是参照 https://oursketch.com/resource?category=ui 这里面的素材,改一下,成自己的界面了
logo也没有,这个图谁来做呀,找https://www.logosc.cn这个,可以生成一个,不用要求太高,看起来像那么回事就行了。
进入正题写小程序
这里主要的一个流程就是上传两个图片,调用我做的接口,把图片中的人脸给替换了。
没啥太多的坑,就是网络请求嘛,显示结果。
但这里有个问题,我们的接口一定是有域名的,还要https的,怎么办?买域名去吧,腾讯云上有,买最便宜的那种 2块一年的,
去小程序上添加域名时,提示一定要备案,晕倒了。
去备案吧。备案流程因省份不同也略有不同,我所在的地方还算方便。
在支付宝上有一个 ICP备案的小程序,提交相关资料,给你一个验证码,把这个码填到 腾讯云的备案系统中,提交待备案。(这里还有个插曲,几次提交后,腾讯云那边电话过来了,一次人脸不清楚 ,再来一次身份证被水印遮挡,再再来一次身份证太小了,不清楚,搞了三次总算过了),备案很快一天就过了。
备案好,就是去申请SSL的证书了,有免费的一年,腾讯云里就有,流程也挺简单的,把证书上传到服务器上。这里记录一下用一个命令:scp
就可以了。再按证书说明配置一下,重启,OK,https就OK了。
剩下就是去写小程序了
这里要注意的是小程序 其实对于iOS、安卓还是有区分的,写完以后,要在iPhone安卓手机上都试一下。
然后,就是提交审核了。
很快,基本上不到一个小时,审核通过了,发布,激动人心的时刻到了。
忙了好几天终于上线了。
有一个小程序数据助手的小程序可以很方便的查看用户情况。当然我的小程序没人用的,我也没打算去推广,因为我自己买的服务器不行的,只有1M带宽的。
总结一下:虽然程序简单,但整个过程还是学到了很多东西的。有那么一点点小满足感。