上传图片快速预览HTML5 FileReader + Window.URL+滤镜(兼容低版本IE)

基于IC动态加权的机器学习多因子选股策略:从模型融合到实战回测 在量化投资领域,多因子选股模型通过挖掘市场数据中的有效信号来预测股票收益。其核心原理在于利用统计学与机器学习算法,从海量因子中识别出与未来收益具有稳定相关性的特征。这一技术的核心价值在于将主观投资决策转化为系统化、可重复的客观过程,从而在控制风险的前提下追求超额收益。其典型应用场景包括股票阿尔法策略构建、Smart Beta产品设计以及资产配置中的股票筛选环节。本文聚焦于如何通过信息系数(IC)这一关键指标,动态融合Ridge回归、MLP神经网络和随机森林等多个预测模型,构建一个能够自适应市场风格轮动的选股 阅读详情

在网页中经常需要上传图片并进行预览,大多数情况下是通过ajax将图片上传到后端,然后反馈上传状态和结果给前端进行预览。这里我们介绍三种快速的上传图片预览方法,不需要后端参与也可快速进行图片预览。
FileReader文档
Window.URL文档


1.获取File对象

两种预览方法均需要先获取<input type='file'>控件的file对象

var fileinput = Document.getElementById('id');
var File = fileinput.files[0];  //获取第一个File对象
//当上传文件为多个时,通过循坏获取多个File对象
var fileList = fileinput.files;
		for( var i = 0 ; i < fileList.length ; i++ ){
			console.log(fileList[i]);
		}

属性

File.name  //返回当前 File 对象所引用文件的名字,只读 
File.size  //返回文件的大小,只读,单位为字节
File.type  //返回文件类型,例如 PNG 图像是 "image/png",只读
File.lastModifiedDate //返回当前文件的最后修改日期,如果无法获取到文件的最后修改日期,则使用当前日期来替代,只读

//可以根据以上属性设置上传文件类型以及最大上传文件大小

2.FileReader

构造对象

if (window.FileReader){    //检测浏览器是否支持
	var reader = new FileReader();  //构造FileReader对象
}else{
	//不支持则只有使用其他图片预览方法
}

方法

reader.readAsArrayBuffer(File);  //将文件读取为ArrayBuffer对象格式
reader.readAsBinaryString(File); //将文件读取为二进制数据
reader.readAsDataURL(File);   //将文件读取后返回其URL,适合图片预览
reader.readAsText(File,encoding='UTF-8') //将文件读取为文本形式,可指定编码方式
reader.abort()  //终止读取操作

事件

reader.onloadstart = function(){
	//文件开始读取时触发
};

reader.onprogress = function(event){
	//文件读取过程时定时触发
	//已读取文件大小: event.loaded
	//文件总大小: event.total
	//可利用以上两个参数和HTML的<progress>标签搭配,制作一个读取进度条
};

reader.onabort = function(){
	//当文件读取被中止时触发
};

reader.onerror = function(){
	//当读取操作发生错误时触发
};

reader.onload = function(){
	//当读取操作成功完成时触发
};

reader.onloadend = function(){
	//当读取操作完成时调用,不管是成功还是失败.该处理程序在onload或者onerror之后调用.
};

属性

reader.error  //在读取文件时发生的错误. 只读

reader.readyState  //表明FileReader对象的当前状态。包含以下三种状态,0:还没有加载任何数据;1:数据正在被加载;2:已完成全部的读取请求

reader.result   //读取到的文件内容.这个属性只在读取操作完成之后才有效,并且数据的格式取决于读取操作是由哪个方法发起的. 只读.

预览方法

使用readAsDataURL()方法,读取完成后,result属性中即保存着图片的URL,赋值给<img>的src属性即可

3.Window.URL##

获取URL对象

var URL = window.URL || window.webkitURL;

创建图片URL

var imageURL = URL.createObjectURL(File);
//创建后即可直接使用该URL,赋值给<img>的src属性

释放URL

 URL.revokeObjectURL(imageURL) 

4.IE滤镜

try
{
	fileobj.select();
	fileobj.blur();
	var path = document.selection.createRange().text;
	var pic = document.getElementById("person_pic");   //获取img标签
	pic.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale',src=\"" + path + "\")";    //滤镜预览图片
	pic.src = 'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==';                 //设置img的src为base64编码的透明图片,要不会显示红xx
}
catch(e)
{
	alert(e+"\n"+"如果错误为:Error:Automation 服务器不能创建对象;"+"\n"+"请按以下方法配置浏览器:"+"\n"+"请打开【Internet选项-安全-Internet-自定义级别-ActiveX控件和插件-对未标记为可安全执行脚本的ActiveX控件初始化并执行脚本(不安全)-点击启用-确定】");
}

5.使用例子

$(document).on("change","input[type=file]",function(){	//上传头像图片预览,未来元素绑定法
	var fileobj = $(this)[0];
	if (fileobj && fileobj.files){   //是否能获取file对象
		var headimage = fileobj.files[0]
		if (headimage.type.split('/')[0] == 'image'){
			if(headimage.size/1024/1024 <= 1 ){
					$('#pic_name').text(headimage.name);
					if (typeof FileReader != 'undefined'){
						var reader = new FileReader();
						reader.readAsDataURL(headimage);
						reader.onload = function(){
							var dataURL = reader.result;
							$("#person_pic").attr("src",dataURL);
						};
					}else{
						var URL = window.URL || window.webkitURL;
						var imageURL = URL.createObjectURL(headimage);
						$("#person_pic").attr("src",imageURL);
					} 
			}else{
				alert("图片大小必须小于1M")
				fileobj.value = '';
				$('#pic_name').text("上传图片失败");
			}
		}else{
			alert("上传文件必须为图片格式");
			fileobj.value = '';
			$('#pic_name').text("上传图片失败");
		}
	}else{    //不能获取file对象,一般都是低版本的IE,使用滤镜
		try{
			fileobj.select();
			fileobj.blur();
			var path = document.selection.createRange().text;    
			var fso = new ActiveXObject("Scripting.FileSystemObject");
			var fileSize = fso.GetFile(path).size;
			if (fileSize/1024/1024 >= 1){        //检查图片大小
				var file_clone = fileobj.cloneNode(false);
				fileobj.parentNode.replaceChild(file_clone,fileobj);    //由于低版本IE无法修改input file的值,直接克隆一个替换原来的实现清空操作
				$('#pic_name').text("上传图片失败");
				alert("图片大小必须小于1M");
			}else{                                //预览图片
				var text_list = $("input[type=file]").val().split("\\");
				var pic_name = text_list[text_list.length-1];
				$('#pic_name').text(pic_name);
				var pic = document.getElementById("person_pic");
				pic.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale',src=\"" + path + "\")";    //滤镜预览图片
				pic.src = 'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==';                 //设置img的src为base64编码的透明图片,要不会显示红xx
			}
		}catch(e){
			alert(e+"\n"+"如果错误为:Error:Automation 服务器不能创建对象;"+"\n"+"请按以下方法配置浏览器:"+"\n"+"请打开【Internet选项-安全-Internet-自定义级别-ActiveX控件和插件-对未标记为可安全执行脚本的ActiveX控件初始化并执行脚本(不安全)-点击启用-确定】");
		}
		
	}
});

如果觉得这篇文章帮助了您,请打赏一个小红包鼓励作者继续创作哦!!!

在这里插入图片描述

解决Android UVCCamera stopPreview 报错 崩溃 闪退 问题 在使用libuvccamera库的UVCCamera时,经常在调用stopPreview关闭预览的时候,app直接崩溃闪退了,经过综合各种修改源码的方案,已解决这个问题,以下请参考: 首先找到android_usbfs.c,linux_usbfs.c两个原文件,在两个文件中都可以找到这段代码,按如下示例修改: 修改前: for (i = 0; i < num_urbs; i++) { if (urb == tpriv->iso_urbs[i]) { urb_idx = i + 1; 阅读详情

相关推荐

解决VM 与 Device/Credential Guard 不兼容。在禁用 Device/Credential Guard 后,可以运行 VM 的方法

在启用了Credential Guard或Device Guard的Windows 10主机上启动12.5版之前的VMware Workstation中的虚拟机时,将显示蓝色诊断屏幕(BSOD)。 会看到类似于以下内容的错误: VMware Workstation和Device / Credential Guard不兼容。禁用Device / Credential Guard后,可以运行VMwar...

Hern(宋兆恒) 39万+

下载各类文件流的方法(兼容各个浏览器,包含错误信息处理)

downloadFile(res,fileName) { const blob = new Blob([res], {type: 'application/json'}) // 通过fileReader读取这个blob const reader = new FileReader() // 将blob对象以文本的方式读出,读出完成后将会执行onload方法 reader.readAsText(blob) reader.onload = .

STRIVE_LC的博客 1183

从零开始的 AI Infra 学习之路

AI Infra(AI 基础设施)是指为上层的 AI 算法应用提供支持的 AI 全栈底层技术,通过合理利用计算机体系结构,可以实现 AI 计算的加速和部署。AI Infra 主要包括以下内容:AI 训练框架 & 推理引擎;AI 编译 & 计算架构;AI 硬件 & 体系结构。参考资料:;。

AI Infra / LLM / 软件开发 3万+

window.URL || window.webkitURL || window.mozURL 的作用

window.URL || window.webkitURL || window.mozURL 的作用 URL对象是硬盘(SD卡等)指向文件的一个路径,如果我们做文件上传的时候,想在没有上传服务器端的情况下看到上传图片的效果图的时候就可是以通过var url=window.URL.createObjectURL(obj.files[0]);获得一个http格式的url路径,这个时候就可以设置到<img>中显示了。 window.webkitURL和window.URL是一样的,window.

新征程的博客 2340

从科研小白到动物行为分析:我的DeepLabCut 3.0安装与初体验全记录

本文记录了从科研小白到成功安装并使用DeepLabCut 3.0进行动物行为分析的全过程。详细介绍了Anaconda环境配置、CUDA版本选择、DeepLabCut安装步骤及验证方法,并分享了初体验中的实用技巧和跨学科研究心得,为生物研究者提供了AI工具应用的实战指南。

weixin_30235225的博客 402

将AAL图谱对应到Yeo7大网络中【原理,代码分析】

本文介绍了将AAL2图谱映射到Yeo7大功能网络的方法。通过整合皮层(Yeo2011)、小脑(Buckner2011)和纹状体(Choi2012)三个区域的功能网络图谱,采用投票机制确定每个AAL区域的网络归属。具体步骤包括:1)统计每个AAL区域体素在各网络图谱中的分布;2)选择体素数量最多的网络作为该区域的最终标签。该方法实现了从解剖结构到功能网络的映射,可获得120个AAL区域对应的7大功能网络标签。

yes666666的博客 2206

JS_获取在input:file中选中图片的宽高信息,监听读取文件过程

方法一 操作方法: window.URL || window.webkitURL window.URL属性返回一个对象,这和对象提供了一个静态createObjectURL()方法去 创建和管理object URLs. URL对象是硬盘指向文件的一个路径,如果我们做文件上传的时候,想在没有上传服务器端的情况下看到上传图片的效果图的时候就可是以通过var url=window.URL.createObjectURL(obj.files[0]);获得一个http格式的url路径,这个时候就可以设置到img中显

小歪博客 1593

详解相机的sensor工作原理

目录sensor成像原理拜尔马赛克变换(BAYER DEMOSAICING)维伦阵列摩尔纹 sensor成像原理 相机或摄像头使用数百万个微小的光腔(感光元件)来记录图像。 成像时,sensor将镜头投射来的光子储存为模拟电信号。 曝光完成后,相机关闭这些光腔(感光元件),然后通过测量模拟电信号的强度来评估每个腔中有多少光子掉入来计算数字电信号的数值。 然后模拟电信号转换为数字电信号,数字电信号的数值由位深度决定(RGB的位深度)。 最后,根据正在记录的文件格式(8位JPEG位0-255),可能会再次降低

路人coder 2万+

文件上传方式: URL.createObjectURL() 和 FileReader.readAsDataURL()的区别

URL.createObjectURL() 简单来说:URL.createObjectURL()处理后生成了一个临时的链接,直接赋值给src就行。 使用方式: this.imageUrl = URL.createObjectURL(file.raw); 示例: <!-- 预览图片 --> <el-dialog :visible.sync="dialogVisible"> <img width="1...

weixin_58016047的博客 7011

EGE基础入门篇(一):绘图基础知识

EGE绘图所需要了解的相关基础知识

依稀_yixy的博客 2万+

【UE 反射】反射的原理是什么?如何使用机制?

静态类型检查确保了类型的早期一致性和高效的代码执行,但减少了灵活性。动态类型检查提供了更大的灵活性,但增加了运行时的开销和潜在的错误。反射作为一种动态特性,无论是在静态类型语言还是动态类型语言中,都提供了强大的运行时类型操作能力,但也伴随着性能和安全性方面的权衡。通过理解这些联系,开发者可以在不同的编程语言和应用场景中选择适合的类型检查方式和反射机制,以实现所需的动态行为和灵活性,同时保证性能和安全性。

hhw_hhw的博客 6033

html5 上传图片 兼容,上传图片快速预览HTML5 FileReader + Window.URL+滤镜(兼容低版本IE)-Go语言中文社区...

在网页中经常需要上传图片并进行预览,大多数情况下是通过ajax将图片上传到后端,然后反馈上传状态和结果给前端进行预览。这里我们介绍三种快速的上传图片预览方法,不需要后端参与也可快速进行图片预览。FileReader文档Window.URL文档1.获取File对象两种预览方法均需要先获取控件的file对象var fileinput = Document.getElementById('id');va...

weixin_35020039的博客 270

Diffusion Model进阶解析:从SDE到概率流ODE的连续化生成建模

本文深入解析了Diffusion Model的连续化生成建模,从离散DDPM和SGM模型引入,阐述了采用随机微分方程(SDE)统一视角的必要性与优势。文章详细拆解了SDE的构成,揭示了其如何统一描述扩散过程,并重点介绍了逆向SDE与确定性的概率流ODE,后者为高效、确定的图像生成提供了理论基础。最后,文章对比了朗之万动力学、数值SDE求解器和数值ODE求解器(如DPM-Solver)等主流采样方法的实战应用与选择策略。

weixin_29099217的博客 437

前端网页截屏全攻略:5种JS方案原理、选型与实战避坑

网页截屏是将网页内容转换为图像的关键技术,其核心原理是通过JavaScript操作浏览器渲染引擎或Canvas API,对DOM元素进行序列化与重绘。这项技术的价值在于能实现数据可视化分享、错误报告、内容存档等场景,无需依赖用户手动操作或后端服务。在工程实践中,开发者常面临跨域资源、样式保真、性能优化等挑战。本文聚焦于html2canvas与html-to-image两大主流方案,深入解析其基于Canvas重绘与SVG foreignObject的底层机制,并针对跨域图片和Web字体等高频问题提供实战解决方

weixin_30516243的博客 364

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

window.URL.createObjectURL

创建一个新的对象URL,该对象URL可以代表某一个指定的file对象或者bold对象。 可以用于在浏览器上预览本地的图片或者视频。 URL对象是硬盘(SD卡等)指向的一个文件路径,如果我们做文件上传的时候,想在没有上传服务器端的情况下看到上传图片的效果图的时候,就可以通过var url = window.URL.createObjectURL(files[0]);获得一个http格式的url路径,这个时候就可以设置img中的src进行显示了。 语法 bold参数是一个file对象或者bold对象。

qq_43654065的博客 1万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

js下载 写入文件并下载文件

<!DOCTYPE html> <html> <head> <!--<script type='text/javascript' src="SaveBlob.js"/>--> </head> <body> <input type="button" id="savetext" value="Save"...

leixu1027的博客 2333

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

图片上传及预览

<input type="file" name="myfile"> <img src="" alt="" id="img"> 方式一:使用window.createObjectURL let input =document.getElementsByName('myfile')[0]// 获取input的file对象 let img=document.getElementById('img') input.addEventListener('change',()=>{

weixin_42395736的博客 448

本地预览图片

上传图片在本地预览,生成url let URL = window.URL || window.webkitURL;//window.webkitURL一般手机、火狐浏览器使用 this.imageUrl= URL.createObjectURL(file.raw)

weixin_44947862的博客 163

HTML5之FileReader的使用

HTML5定义了FileReader作为文件API的重要成员用于读取文件,根据W3C的定义,FileReader接口提供了读取文件的方法和包含读取结果的事件模型。 FileReader的使用方式非常简单,可以按照如下步骤创建FileReader对象并调用其方法: 1.检测浏览器对FileReader的支持 if(window.FileReader) { var fr =

骆昊的技术专栏 14万+

filereader读取文件_「HTML5」FileAPI 文件操作实战

本文来自《FileAPI 文件操作实战》 其他系列放在了Github,欢迎交流和Star介绍HTML5 为我们提供了 File API 相关规范。主要涉及 File 接口 和 FileReader 对象 。本文整理了兼容性检测、文件选择、属性读取、文件读取、进度监控、大文件分片上传以及拖拽上传等开发中常见的前端文件操作。准备工作首先,我们的 File 来自于<input>标签中选中的...

weixin_39799290的博客 198

【JS】前端文件读取FileReader操作总结

开发中经常遇到文件上传的场景,有时需要前端将文件内容读取出来再以base64格式传到接口

yqdid的博客 1万+

读取本地文件理解FileReader对象的方法和事件以及上传按钮的美化。

一、FileReader对象 用来把文件读入内存,并且读取文件中的数据。FileReader对象提供了异步API,使用该API可以在浏览器主线程中异步访问文件系统,读取文件中的数据。 浏览器支持情况,可以根据window.FileReader进行判断,火狐、谷歌支持,IE不支持。 二、FileReader的方法和事件介绍 表一:方法;表二:事件; readAsBin...

weixin_30314631的博客 199

FileReader详解

我在Google Chrome Web Store上发布了一个案例hahaOCR,该扩展程序可以帮助用户识别出图片中的文字信息,并以文本形式显示,大家可以在chrome网上应用商店中找到我发布的应用程序,如图所示: 图1 - hahaOCR 该扩展程序支持用户通过文件上传按钮上传图片,请看演示效果: 图2 - 测试图片 图3 - 测试效果 接下来,我们将在本文中详细讲解该案例所涉及的文件(图片)处理模块。 参考资料 MDN Web Docs:https://developer.mozilla.o

石璞东 7768

JavaScript 中的FileReader对象(实现上传图片预览)

JavaScript 中的FileReader对象(实现上传图片预览) 方法一:使用js的FileReader对象 1、FileReader对象简介 1.1 检测浏览器对FileReader的支持 if(window.FileReader) { var fr = new FileReader(); // add your code here } else { a...

zdd183的博客 504

FileReader文件函数

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>图片上传预览</title> <script type="text/javascript"> function imgPreview(fileDom){ //判断是否支持FileReader if (window.FileReader) { v

web修理工 388

FileReader上传文件

  FileReader对象允许web应用程序异步读取存储在计算机上的文件的内容,使用File或Bolb对象指定要读取的文件或数据。其中File对象可以是来自用户在一个<input>元素上选择文件后返回的FileList对象,也可以是来自拖放操作生成的DataTransfer对象,还可以是来自在一个HTMLCanvasElement上执行的mozGetAsFile()方法后返...

weixin_30861459的博客 1022
上一篇: django Paginator分页+Boostrap样式快速生成分页按钮
下一篇: wordcloud制作中文词云图(官方文档参数翻译)
PAT-python-zjw
博客等级 码龄10年 381粉丝 408原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值