php+python富文本实现tiff或tif结尾文件图片上传

4 篇文章 0 订阅
2 篇文章 0 订阅

在富文本使用过程中发现有很多同事总是有tiff结尾的文件需要上传 也是图片的一种格式吧,这种格式的文件不支持在线预览的 如果是在网页中打开直接就会下载

解决方法就是需要把这个文件的类型需要转化一下,网络上很多什么imagic扩展来出来, 但是很麻烦 我觉得很麻烦,我试过 过段放弃了

第一步 我们需要 修改编辑器的图片上传的配置文件,这个需要根据你使用的编辑器类型 先把这个类型限制给加上tif和tiff格式的支持,不然还没有触发网络请求就会被提示上传失败

第二步 我们需要在富文本图片上传的接口判断是否是tiff文件我们单独处理

$houzhui = end(explode('.', $_FILES['file']['name'])); //获取后缀
in_array($houzhui,['tif','tiff']) //根据后缀判断是否单独处理
//上传文件到本地代码
上传成功返回完整的URL访问地址

第三步 我们需要用flask搭建一个能访问的web服务  获取图片上传七牛

import flask, json
import cv2
from qiniu import Auth, put_file, etag
import hashlib
import os
import requests
from flask import request
'''
flask: web框架
文件转化接口,需要传url、http://127.0.0.1:8882/uploadTiffImgs
'''
# 创建一个服务,把当前这个python文件当做一个服务
server = flask.Flask(__name__)
AK = ''
SK = ''

@server.route('/uploadTiffImgs', methods=['post'])

def uploadTiffImgs():
    # 读取上传文件 存储到本地 这是一种方法 直接使用表单提交file
    # file = flask.request.files.get('file')
    # file.save("imgs/" + file.filename)  # 保存文件 也可以写绝对路径 存入到你想存入的地方
    # flask.request.get('file')
    
    #换一种方法直接拉取图片    
    tif_path = request.values.get('file')
    res = requests.get(tif_path)
    # 获取文件名称
    file_name = os.path.basename(tif_path)
    # 发出请求返回结果
    pic = res.content
    #写入
    photo = open(r'imgs/' + file_name, 'wb')
    photo.write(pic)
    photo.close()

    # 获取本地图片tiff格式转化为png格式
    files = cv2.imread("imgs/" + file_name, 1)
    jpg_path_name = getMd5(file_name)
    cv2.imwrite("img/" + jpg_path_name + ".png", files)

    # 获取本地图片上传七牛返回文件名称
    q = Auth(AK, SK)
    # 要上传的空间
    bucket_name = 'abc'
    # 上传后保存的文件名
    key = "report/" + jpg_path_name + ".png"
    # 生成上传 Token,可以指定过期时间等
    token = q.upload_token(bucket_name, key, 3600)
    # 要上传文件的本地路径
    localfile = "img/" + jpg_path_name + ".png"
    ret, info = put_file(token, key, localfile)
    if (ret == None):
        # 上传失败
        return json.dumps({'msg': '上传失败!', 'code': 1, "errno": 2})
    os.remove(localfile)
    os.remove("imgs/" + file_name)
    return json.dumps({'msg': key, 'code': 0, "errno": 0})
    
    #本地的时候就不用try 方便看错
    # try:
    #  执行什么
    #
    # except:
    #     return json.dumps({'msg': '上传失败!', 'code': 1,"errno":3})
    # else:
    #    再执行什么


#获取一个MD5字符串 用作存储名称
def getMd5(str):
    md5_value = hashlib.md5()
    md5_value.update(str.encode("utf8"))
    return md5_value.hexdigest()

if __name__ == '__main__':
    server.run(debug=True, port=8882, host='0.0.0.0') 
第四步 第二步后上传到本地就请求你的临时web服务 第三步中的 ,以上就是处理方法,这个方法很简单。展示了python对图片处理的强大的地方,以上的flask服务测试的时候可以用 不要用到正式环境中去,正式环境中可以使用uWSGI部署flask服务(反正我是用的这个)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值