当前位置: 首页 > news >正文

vue2 解密图片地址(url)-使用blob文件-打开png格式图片

一、背景

开发中需要对加密文件进行解码,如图片等静态资源。

根据后端给到的url地址,返回的是图片文件,但是乱码的,需要解码成png图片进行展示

二、请求接口

将后端返回的文件转为文件流,创建Blob对象来存储二进制数据,通过URL.createObjectURL()方法创建二进制数据的URL,将URL赋值给imgData以显示图片。

 //初始化图片数据并进行处理initImg() {this.isLoading = true//请求携带的参数let param = {printType: this.printType,orderIdList: Array.isArray(this.orderIdList) ? this.orderIdList : this.orderIdList.split(','),billTypeList: this.billType.split(',')}let promise//发请求,此处是封装的请求promise = this.$http.any('post', `${this.$url.payList.getPrintReceipt}`, {}, param, null, 'blob')// 发起POST请求,获取打印收据的二进制数据,并将结果赋值给promise变量promise.then((res) => {let reader = new FileReader() // 创建FileReader对象,用于读取二进制let response = nullreader.onload = () => {// 如果读取的结果是以'{'开头,则将其解析为JSON对象if (reader.result[0] == '{') {response = JSON.parse(reader.result)this.$message.error(response.msg)} else {this.inChooseCharge = falselet fileType = 'png' // 设置文件类型为pnglet blob = new Blob([res], { type: `application/${fileType}` }) // 创建Blob对象,用于存储二进制数据let data = window[window.webkitURL ? 'webkitURL' : 'URL']['createObjectURL'](blob) // 通过URL.createObjectURL()方法创建二进制数据的URLthis.imgData = data // 将URL赋值给imgData,用于显示图片console.log('printinitImg -- imageData', this.imgData)let img = new Image()// 当图片加载完成时执行回调函数img.onload = () => {//对图片宽高比进行判断if (img.width / img.height >= 1100 / 595) {this.fitWidth = true} else {this.fitWidth = false}this.$nextTick(() => {this.popupDoLayout()})}img.src = this.imgData}this.isLoading = false}reader.readAsText(res, 'utf-8') // 以文本格式读取二进制数据}).catch((error) => {this.isLoading = falseconsole.log('请求失败:', error)})}

说明:发请求时要说明是转换成blob ,再创建Blob对象,存储二进制数据。最主要的还是要多打日志,看每一步的结果,再做对应操作!!!

MDN文件参考:👉URL.createObjectURL() - Web API 接口参考 | MDN

 

三、结构

使用img展示图片,利用element的image-viewer来进行图片缩放,需要从element中引入

<div class="main print-box" :class="{ 'fit-width': fitWidth, 'fit-height': !fitWidth }" v-else><img class="img" :src="imgData" alt="预览图" @load="popupDoLayout" @click="imgData ? getShowViewer(imgData) : null" /><div class="flex bottom-box"><el-button type="primary" @click="print" :disabled="!imgData">打印</el-button></div></div><el-image-viewer v-if="showViewer" :on-close="closeViewer" :url-list="viewerImgList" />

 从element中引入image-viewer使用👇

相关文章:

vue2 解密图片地址(url)-使用blob文件-打开png格式图片

一、背景 开发中需要对加密文件进行解码&#xff0c;如图片等静态资源。 根据后端给到的url地址&#xff0c;返回的是图片文件&#xff0c;但是乱码的&#xff0c;需要解码成png图片进行展示 二、请求接口 将后端返回的文件转为文件流&#xff0c;创建Blob对象来存储二进制…...

cuda PyTorch

1. GPU对应的CUDA版本 nvidia-smi CUDA Version: 12.2 GPU diver 大于cuda toolkit&#xff0c; pytorch 版本根据cuda toolkit 2. 查看nvcc的版本&#xff08;即cuda toolkit 版本&#xff09; nvcc --version Cuda compilation tools, release 12.2, V12.2.91 Build cud…...

vue视频直接播放rtsp流;vue视频延迟问题解决;webRTC占cpu太大卡死问题解决;解决webRTC播放卡花屏问题:

播放多个视频 <div class"video-box"><div class"video"><iframe style"width:100%;height:100%;" name"ddddd" id"iframes" scrolling"auto" :src"videoLeftUrl"></iframe>&l…...

leetcode_2316 统计无向图中无法互相到达点对数

1. 题意 给定一个无向图&#xff0c; 统计无法互相到达的点对数。 统计无法互相到达点对数 2. 题解 其实还是求联通块&#xff0c;求联通块可以使用搜索进行标记。还要求得联通块中元素的大小。 联通块其实也就是不相交集合&#xff0c;也可以用并查集来做。 每求得一个联…...

数据结构知识点总结

一、常见的数据结构 数组&#xff0c;栈&#xff0c;队列&#xff0c;链表&#xff0c;散列表&#xff0c;二叉树&#xff0c;堆&#xff0c;跳表&#xff0c;图&#xff0c;树。 1. 数组&#xff1a; 数组的元素在内存中存储是连续存放的&#xff0c;占有连续的存储单元&am…...

【经济研究】数字技术创新与中国企业高质量发展—来自企业数字专利的证据

数据简介&#xff1a;在当前数字经济时代&#xff0c;数字技术创新已成为驱动中国经济发展的核心要素&#xff0c;中国经济由高速增长转向高质量发展的“新常态”发展阶段&#xff0c;开启了革新经济增长方式&#xff0c;优化产业结构&#xff0c;寻找新的经济增长动能关键期。…...

Windows运维相关经验技巧

常用工具 在线PS Photoshop在线 FAQ 电脑能上网&#xff0c;浏览器上不了网 # 错误原因&#xff1a; 设置了网络代理&#xff0c;浏览器无法通过网络代理上网# 解决办法 关闭网络代理 &#xff08;1&#xff09;wini&#xff0c;打开设置 &#xff08;2&#xff09;网络和I…...

AYIT嵌入式实验室2023级C语言训练1-4章训练题

文章目录 前言1. 判断闰年2.(ab-c)*d的计算问题3.计算三角形的周长和面积4.牛牛的等差数列5.判断字母6.网购7. 牛牛的通勤8.获得月份天数9.大小写转换10.KiKi说祝福语11.小乐乐求和12.奇偶统计13.KiKi求质数个数14.乘法表15.牛牛学数列16.牛牛学数列217.数位之和18.魔法数字变换…...

trino tpcds测试

先下载tpcds-kit&#xff08;有Linux和macOS&#xff09;&#xff0c;根据其文档生成数据和查询的sql。 然后hive-testbench&#xff0c;在ddl-tpcds/text/alltables.sql中有建表语句&#xff08;用hive建表&#xff09;。 建完表后LOAD DATA local INPATH "/Users/ding…...

SpringCloud学习笔记(上):服务注册与发现:Eureka、Zookeeper、Consul+负载均衡服务调用:Ribbon

壹、零基础 一、微服务架构零基础理论入门 SpringCloud分布式微服务架构的一站式解决方案&#xff0c;是多种微服务架构落地技术的集合体&#xff0c;俗称微服务全家桶。 二、从2.2.x和H版开始说起 springboot版本选择&#xff1a; git源码地址&#xff1a;https://github.…...

JavaPTA练习题 7-3 身体质量指数(BMI)测算

体重是反映和衡量一个人健康状况的重要标志之一&#xff0c;过胖和过瘦都不利于健康&#xff0c;BMI&#xff08;身体质量指数&#xff09;计算方法&#xff1a;体重&#xff08;以千克为单位&#xff09;除以身高&#xff08;以米为单位&#xff09;的平方。中国成人正常的BMI…...

类的属性和方法(java)

类和对象的使用 创建类&#xff0c;设计类的成员创建类的对象通过“对象.属性”或“对象.方法”调用对象的结构 代码 public class Per {public static void main(String[] args) {// TODO Auto-generated method stub//创建Person类的对象Person p1 new Person();//Scanne…...

C++模拟实现——list

一、成员变量及其基本结构 1.基本结构模型 本质是一个带头双向循环列表&#xff0c;将节点进行封装&#xff0c;并且为了方便使用&#xff0c;进行重定义 2.节点的封装定义 template<class T>//定义节点struct list_node{list_node<T>* _prev;list_node<T>…...

FPGA的音乐彩灯VHDL流水灯LED花样,源码和视频

名称&#xff1a;FPGA的音乐彩灯VHDL流水灯LED 软件&#xff1a;Quartus 语言&#xff1a;VHDL 代码功能&#xff1a; &#xff08;1&#xff09;设计一彩灯控制电路&#xff0c;按要求控制8路&#xff08;彩灯由发光 二极管代替&#xff0c;受实验箱限制&#xff0c;多路同…...

企业知识库软件,快速构建企业知识分享与团队协同的软件

企业知识库是一种特殊的在线协同文档工具&#xff0c;支持包括FAQ、文档、视频、知识图谱等。从本质上讲&#xff0c;它是基于企业知识库软件从而实现内部或外部知识的沉淀、集合、更新、共享等&#xff0c;能为员工或客户提供常见问题的标准回答。 今天我就基于HelpLook &…...

Java,输出一个10行的杨辉三角

据图可以发现&#xff0c;杨辉三角是每行的首元素和末元素都为1&#xff0c;中间的元素都是等于它上面的元素加上左上角的元素。 首先&#xff0c;先完成二数组的创建和初始化&#xff0c;第一行的长度为一&#xff0c;第二行的长度为二……以此类推。所以&#xff0c;外元素的…...

Java版Http请求post和get两种调用实现

在实际项目中常涉及到相互调用&#xff0c;对于http接口的调用&#xff0c;需要经过建立连接&#xff0c;拼接参数&#xff0c;调用等步骤&#xff0c;记录下来&#xff0c;方便查看。 第一步、引入jar包 pom中引入apache的httpclient包 <dependency><groupId>c…...

yjs demo: 多人在线协作画板

基于 yjs 实现实时在线多人协作的绘画功能 支持多客户端实时共享编辑自动同步&#xff0c;离线支持自动合并&#xff0c;自动冲突处理 1. 客户端代码&#xff08;基于Vue3&#xff09; 实现绘画功能 <template><div style"{width: 100vw; height: 100vh; over…...

虹科分享 | 赋能物流机器人:CANopen通信如何发挥重要作用?

现代物流领域迅速融入了技术进步&#xff0c;特别是随着自主机器人的兴起&#xff0c;这一趋势越发明显。确保这些机器人在复杂的仓库环境中精确运行的一个关键方面是CANopen通信协议。该协议集成了各种组件&#xff08;电机、传感器、摄像头和先进的电池系统&#xff09;&…...

南丁格尔玫瑰图

目录 由来 效果图 echarts官网找相似图 将南丁格尔玫瑰图引进html页面中 引入echarts 准备容器 初始化echarts实例对象 指定配置项和数据&#xff08;官网给的option&#xff09; 将配置项给echarts 自定义南格丁尔玫瑰图 修改颜色 修改玫瑰图大小 修改图的模式为半…...

FRED应用:准直透镜模拟与优化

1. 摘要 本文您将会学到如下内容&#xff1a; 透镜基本参数输入&#xff1b; 优化变量与评价函数设定&#xff1b; 优化&#xff1b; 照度分析&#xff1b;2. 操作流程1) 创建之前&#xff0c;我们需要设置其喜好&#xff0c;点击菜单Tools>Preference , 注意其红色…...

PET成像运动校正技术CrowN@22解析与应用

1. PET成像中的运动校正挑战与CrowN22技术概述在神经退行性疾病早期诊断领域&#xff0c;正电子发射断层扫描(PET)技术正面临一个关键瓶颈&#xff1a;长达10-20分钟的脑部扫描过程中&#xff0c;患者不可避免的头部运动会导致图像质量显著下降。传统解决方案如呼吸门控技术对脑…...

【Spring Boot 4.0 Agent-Ready 架构落地指南】:20年专家亲授5步零踩坑配置法,错过再等三年!

第一章&#xff1a;Spring Boot 4.0 Agent-Ready 架构全景认知Spring Boot 4.0 将 JVM Agent 集成能力提升至核心架构层级&#xff0c;标志着可观测性、运行时增强与无侵入式治理正式成为开箱即用的一等公民。Agent-Ready 并非仅指支持 Java Agent 加载&#xff0c;而是构建了一…...

mysql如何防止SQL注入攻击_mysql参数化查询与转义

...

基于opencv的人体姿态识别+康复训练矫正+代码+部署(AI 健身教练来分析深蹲等姿态)

姿态识别康复训练矫正&#xff08;AI 健身教练姿态分析&#xff09; 目录 本文旨在构建一个 AI 健身教练&#xff0c;帮助判断姿态标准与否&#xff0c;并且矫正姿态&#xff01;无论您是初学者还是专业人士&#xff0c;它都可以帮助您无缝地进行深蹲。为了完成这项任务&…...

告别黑屏!手把手教你用V4L2+FrameBuffer在Linux终端直接显示摄像头画面

无图形界面下的Linux摄像头实时显示&#xff1a;V4L2与FrameBuffer实战指南 想象一下这样的场景&#xff1a;你正在远程维护一台没有图形界面的Linux服务器&#xff0c;突然需要快速检查摄像头是否正常工作。或者你正在开发一款嵌入式设备&#xff0c;需要在启动过程中直接显示…...

计算机毕业设计:Python大盘行情与个股诊断预测系统 Flask框架 TensorFlow LSTM 数据分析 可视化 大数据 大模型(建议收藏)✅

博主介绍&#xff1a;✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战6年之久&#xff0c;选择我们就是选择放心、选择安心毕业✌ > &#x1f345;想要获取完整文章或者源码&#xff0c;或者代做&#xff0c;拉到文章底部即可与…...

从‘搬货上车’到‘信号上车’:用大白话讲透ZPW-2000轨道移频的调制原理

从‘搬货上车’到‘信号上车’&#xff1a;用大白话讲透ZPW-2000轨道移频的调制原理 想象一下你站在火车站台&#xff0c;看着一列列火车呼啸而过。这些钢铁巨兽如何安全有序地运行&#xff1f;背后隐藏着一套精密的"对话系统"——轨道电路信号传输。今天我们就用最生…...

3种模式实战VoiceFixer:从噪音录音到清晰人声的AI修复指南

3种模式实战VoiceFixer&#xff1a;从噪音录音到清晰人声的AI修复指南 【免费下载链接】voicefixer General Speech Restoration 项目地址: https://gitcode.com/gh_mirrors/vo/voicefixer 你是否曾因为一段珍贵的录音被背景噪音淹没而懊恼&#xff1f;是否因为老旧录音…...

Windows Cleaner:终极C盘清理与系统加速完整指南

Windows Cleaner&#xff1a;终极C盘清理与系统加速完整指南 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服&#xff01; 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner Windows Cleaner是一款专治C盘爆红的开源系统优化工具…...