前端Vue+后端Flask:从后端获取图片并在前端展示

news/2024/7/10 2:35:09 标签: vue, python, javascript

后端代码:

python"># 项目的根目录 起服务后,相对路径可能会改变
basedir = os.path.abspath(os.path.dirname(__file__))

@app.route('/getPic',methods=['GET', 'POST'])
def findpic():
    img_url = basedir+'/static/tt.png'
    print(img_url)
    with open(img_url, 'rb') as f:
        a = f.read()
    '''对读取的图片进行处理'''
    img_stream = io.BytesIO(a)
    img = Image.open(img_stream)


    imgByteArr = io.BytesIO()
    img.save(imgByteArr,format='PNG')
    imgByteArr = imgByteArr.getvalue()
    print(imgByteArr)
    return  imgByteArr

前端代码:

  • template:
javascript"> <button @click="getPic">获取图片</button>
        <img :src="picurl" alt="beachball" />
  • script的methods中:
javascript">    //从服务器获取图片
    getPic() {
      var that = this;

      axios({
        method: "get",
        url: "http://127.0.0.1:5000/getPic",
        responseType: "arraybuffer", // 最为关键
      }).then(function (response) {
        that.picurl =
          "data:image/jpeg;base64," + that.arrayBufferToBase64(response.data);
      });
    },
    // ArrayBuffer转为base64字符串
    arrayBufferToBase64(buffer) {
      //第一步,将ArrayBuffer转为二进制字符串
      var binary = "";
      var bytes = new Uint8Array(buffer);
      var len = bytes.byteLength;
      for (var i = 0; i < len; i++) {
        binary += String.fromCharCode(bytes[i]);
      }
      //将二进制字符串转为base64字符串
      return window.btoa(binary);
    },
  • script的data中:
javascript">picurl: "",//图片url

效果:

点击前:
在这里插入图片描述
点击后:
在这里插入图片描述


http://www.niftyadmin.cn/n/1689234.html

相关文章

如何使用GitHub同步本地和远程仓库,推送和拉取代码?

使用ssh认证可以避免多次输入账号和密码&#xff1a; (16条消息) window系统&#xff0c;GitLab 远程与本地 SSH 认证连接_weixin_30628077的博客-CSDN博客 GitLab中配置SSH key - 简书 (jianshu.com) 弄一个新的项目&#xff1a;先在网页上创建一个项目&#xff0c;然后git cl…

外界键盘win键失灵的解决方法

我的键盘是阿米诺的机械键盘&#xff0c;其他平牌的也可以试一试。 解决方法&#xff1a;按fn键和下面这个键&#xff0c;就可以解锁键盘的win键。 差点就换键盘了&#xff0c;淦&#xff01;

js中的数组和字典的长度

实际上&#xff0c;js中只有数组&#xff0c;没有字典。字典只能算是数组的特殊使用。 数组用[],字典用{} 数组的长度&#xff1a;data.length 字典的长度&#xff1a;Object.keys(data).length

flask initdb命令Error: No such command “initdb“.的解决

在flask initdb之前pip install flask-migrate&#xff0c;然后flask db init&#xff0c;然后再flask initdb&#xff0c;就建表成功了

python 使用pywin32 转换xls为xlsx

1、安装使用wps&#xff0c;用微软的office会出各种错误 2、使用绝对路径&#xff0c;不要使用相对路径。因为这里其实是通过pywin32调用的Windows接口 import win32com.client as win32fname "E:\\file\\master design\\drill\\table_ocr_v2\\tools\\32.xls" exc…

win11桌面或文件夹鼠标右击卡死,任务栏崩溃问题解决

从win10升级到win11 后&#xff0c;电脑出现一个问题&#xff1a;在桌面或者文件夹内&#xff0c;对空白地方右击鼠标&#xff0c;系统会短暂卡死&#xff0c;任务栏会重启。这个问题困扰了我很久&#xff0c;今天终于在知乎的一个好大哥那里找到了解决方法。原文链接 简单来说…

Qt(X):打包和部署

打包和部署&#xff08;win&#xff09; 工程模式切换到release模式&#xff0c;编译找到release模式构建的文件夹修改图标&#xff08;ico格式&#xff09;把图标添加到工程文件夹里面&#xff0c;并且追加pro文件如下内容&#xff1a;RC_ICONSxxx.ico编译封装&#xff1a;需…

Qt(X):InnoSetup进行软件打包

基础操作 File-New&#xff08;不创建空的脚本文件&#xff09;填写信息 写路径和文件夹名 写主程序路径和其他文件 选中附属文件&#xff0c;点击编辑&#xff0c;填写子文件夹名 配置快捷方式 设置许可和其他信息 安装模式 设置安装语言 安装包生成选项&#xff0c;输出目录…