Django实现微信小程序九宫格切图后端(第九周学习记录)
发表时间:2020-10-19
发布人:葵宇科技
浏览次数:37
第九周学习记录
上周第八周确实没有发布我的学习记录,因为服务器的原因项目也一直延迟,好在周日老师的服务器批下来,小伙伴也开始了快乐windows服务器配置,我自然也不能闲着,这周开始赶进度
一、小程序的js口
原来的那个集成后的小程序一直处于微信头像上传不了的情况,其他的功能请求都很完善了,这个问题还在解决,因该是两个小程序的合并出现冲突,如果大家有好的方法欢迎指出
二、新项目:九宫格切图
这个项目说新也不是最新的,因为之前基础的原因一直搁置了,现在才捡起来,功能就是前端传一张完整的一张图片,后台处理图片并将图片切为九张,然后返回前端,通过js处理一下显示到wxml界面上,技术上的工作在经历了证件照的工作后就十分简单了
我在这定义了一个app,意思就是剪切图片,通过访问/cut/cut_image
可以通过POST请求调用函数,具体的函数方法我在第一篇博客也指出了
https://blog.csdn.net/weixin_43951163/article/details/107928486
唯一不同的是,需要base64转码,返回http响应
def cut_main(request):
if request.method == 'POST': # 发送请求的格式
image = request.FILES['image'] # 数据请求的名字
open_id = request.POST.get('openid') # 获取小程序发送过来的opid
global basedir
basedir = os.path.dirname(os.path.dirname(__file__)) # APP1目录
path_old = basedir + '/cut_image/temp/' # 原图片静态存储路径
content = path_old # 处理后的存储路径
# print(centent)
with open(content + open_id + '.jpg', 'wb') as f: # 保存小程序传输过来的图片
f.write(image.read())
f.close()
# 加入图片转换代码
file_path = os.path.join(content, open_id + '.jpg')
print(file_path)
# 分别调用处理函数
image = Image.open(file_path)
image = fill_image(image)
image_list = cut_image(image)
DIR_NAME = os.path.dirname(os.path.abspath(__file__))
# 保存图片
save_images(DIR_NAME, image_list)
res_dir = os.path.join(DIR_NAME, 'result')
# 创建长度为9的数组
pic_base = [1,2,3,4,5,6,7,8,9]
# base64转码
for index in range(0,9):
new_name = os.path.join(res_dir, str(index+1) + '.png')
print(new_name)
img_im = cv2.imread(new_name, 1) # 要把处理完的图片转码成base64返回
receive_base = base64.b64encode(cv2.imencode('.png', img_im)[1]).decode() # 把转换的编码赋值
pic_base[index] = receive_base
#每处理一张就删除
os.remove(new_name)
print(pic_base[index]) # 打印图片的base码的字母
#删除原图片
del_path = path_old + open_id +'.jpg'
print(del_path)
os.remove(del_path)
return HttpResponse(pic_base)
这样在执行一个请求后文件不会出现任何变化,当然,这里我没有使用服务器部署,日后会进一步改进
小程序前端会受到类似这样的代码
三、上传服务器
这里我先上传到我自己的centos7的服务器上,具体的windows高配置服务器我的另外一个伙伴会更新
上传自己服务器还是按照之前博客所说,可以参考我以前的文档
https://blog.csdn.net/weixin_43951163/article/details/108395176
或者https://www.django.cn/article/show-30.html