Django实现微信小程序九宫格切图后端(第九周学习记录) - 新闻资讯 - 云南小程序开发|云南软件开发|云南网站建设-昆明葵宇信息科技有限公司

159-8711-8523

云南网建设/小程序开发/软件开发

知识

不管是网站,软件还是小程序,都要直接或间接能为您产生价值,我们在追求其视觉表现的同时,更侧重于功能的便捷,营销的便利,运营的高效,让网站成为营销工具,让软件能切实提升企业内部管理水平和效率。优秀的程序为后期升级提供便捷的支持!

您当前位置>首页 » 新闻资讯 » 小程序相关 >

Django实现微信小程序九宫格切图后端(第九周学习记录)

发表时间:2020-10-19

发布人:葵宇科技

浏览次数:31

第九周学习记录

上周第八周确实没有发布我的学习记录,因为服务器的原因项目也一直延迟,好在周日老师的服务器批下来,小伙伴也开始了快乐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

相关案例查看更多