`
jackleechina
  • 浏览: 585534 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类

按长宽比例预览上传的本地图片(javascript)(兼容ie,firefox,chrome)

 
阅读更多
一 兼容ie和firefox 浏览本地图片

<html>
    
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>
            用户中心
        </title>
        <base href="" />
        <meta http-equiv="keywords" content="${keywords}">
        <meta http-equiv="description" content="${description}">
        <script type="text/javascript">
            function perImg(o) {
    var filepath = ""; //文件路径  
    var agent = window.navigator.userAgent;
    var isIE7 = agent.indexOf('MSIE 7.0') != -1;
    var isIE8 = agent.indexOf('MSIE 8.0') != -1;
    if (!o.value.match(/.jpg|.gif|.png|.bmp/i)) {
        alert('图片格式无效!');
        return;
    }
    if (agent.indexOf("Firefox") != -1 ||agent.indexOf("Chrome") != -1) {
        //火狐浏览器判断  
        document.getElementById("preview").src = window.URL.createObjectURL(o.files[0]); //显示预览图  
        alert(document.getElementById("preview").src);
        var fileSize = o.files[0].size; //获取文件大小  
        alert(fileSize);
        if (fileSize > 1024) {
            alert("文件不能大于1M");
        } else {
            alert("文件符合大小");
        }
    }
}
        </script>
    </head>
    
    <body>
        <div>
            <img id="preview" style="width: 80px; height: 85px; border: 0px;" />
        </div>
        <br />
        <input type="file" id="file" name="file" onchange="perImg(this)" />
    </body>

</html>



二)兼容 ie,firefox,chrome 浏览本地图片

<style type="text/css">
#preload{
	position:absolute;
	left:"-9999px";
	top:"-9999px";
	width:"1px";
	height:"1px";
	filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=image); 
}
</style>


function setImagePreview() {
		var MaxWidth=205;
        var docObj=document.getElementById("imageFile");
        var f=docObj.value;
        if(length(f)>20){
			alert("文件名必须小于20个英文字符(即10个中文字符)!");
			return false;	
		}
        /* firefox 下正常
	    var fileInput = $("#imageFile")[0];
	    byteSize  = fileInput.files[0].size;
	 	if( Math.floor(byteSize/1024)>5*1024 ){
	 		alert("图片不能大于5M");
	 		return false;
	 	}*/
 		if(!f.match(/.jpg|.gif|.jpeg|.png|.bmp/i))
        {
          alert("图片类型必须是.gif,jpeg,jpg,png,bmp中的一种");
          return false;
        }
        
        var imgObjPreview=document.getElementById("preview");
        if(docObj.files &&    docObj.files[0]){
              //火狐下,直接设img属性
              imgObjPreview.style.display = 'block';
              //imgObjPreview.style.width = '200px';
              //imgObjPreview.style.height = '350px';                    
              //imgObjPreview.src = docObj.files[0].getAsDataURL();
		      //火狐7以上版本不能用上面的getAsDataURL()方式获取,需要一下方式  
			 imgObjPreview.src = window.URL.createObjectURL(docObj.files[0]);
			 Wa_SetImgAutoSize(imgObjPreview);
        }else{
              //IE下,使用滤镜
              docObj.select();
              var imgSrc = document.selection.createRange().text;
              var preload = document.getElementById("preload");
              var localImagId = document.getElementById("localImag");
              //必须设置初始大小, 如果没虾米的初始化赋值,preload.offsetWidth,preload.offsetHeight都为0
              preload.style.width = "1px";
              preload.style.height = "1px";
              preload.style.top= "-9999px";
              preload.style.left = "-9999px";
              //图片异常的捕捉,防止用户修改后缀来伪造图片
			   try{
				       preload.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=image)";
					   preload.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = imgSrc;
		               localImagId.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)"; 
		               localImagId.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = imgSrc;
		               alert(preload.offsetWidth+"a ");
		            	   localImagId.style.width=MaxWidth+"px";
		            	   localImagId.style.height= Math.floor(MaxWidth*(preload.offsetHeight/preload.offsetWidth))+"px";
	          }catch(e){
	                alert("您上传的图片格式不正确,请重新选择!");
	                return false;
	           }
	           imgObjPreview.style.display = 'none';
	           document.selection.empty();
		       }
		       return true;
     }

	function length(str) {
		var strArray=str.split("\\");
		str=strArray[strArray.length-1];
	    var realLength = 0, len = str.length, charCode = -1;
	    for (var i = 0; i < len; i++) {
	        charCode = str.charCodeAt(i);
	        if (charCode >= 0 && charCode <= 128) realLength += 1;
	        else realLength += 2;
	    }
	    return realLength;
	}


<div id="preload" ></div>
<div id="localImag" >
								<img id="preview" style="width:205px;height:auto" src="<%=request.getContextPath() %>/api/ad/v1/splash/download?splash_id=${splashPicture.id}" onload="Wa_SetImgAutoSize(this)" />
							</div>
分享到:
评论

相关推荐

    图片处理 ie控件 ,可定义图片长宽,按比例缩小,处理后图片文件存入本地文件夹

    调用图片处理控件,对图片进行处理。 sPicname :源文件名称。 sPicDir:源文件所在文件路径。 sPicExt:源文件扩展名。 dPicWidth:目标文件所要的宽度。 dPicHeight:目标文件所要的高度。 dFileName:目标...

    javascript 写的一个图片自动适应长宽比列的函数

    本文将深入探讨一个JavaScript函数,该函数能够确保在网页上加载的图片能够根据容器大小自动调整其尺寸,同时保持原始的长宽比例不变,从而避免图片在显示过程中出现变形或拉伸的情况。 #### 函数定义与参数说明 此...

    kindEditor4.1版修改上传图片宽高(图片自适应)

    2. **处理图片高度**:为了保持图片的比例不变,可以考虑将图片的高度属性删除或者注释掉,这样浏览器会自动根据宽度的比例来计算高度。 ```javascript // img.attr('height', height); // 注释掉此行 ``` 3. *...

    图片按比例缩放

    "图片按比例缩放"就是其中一个核心操作,它涉及到图像处理的基本原理和技术。在本篇文章中,我们将深入探讨如何进行图片按比例缩放,以及这一过程中的相关知识点。 首先,我们来理解什么是“按比例缩放”。比例缩放...

    python实现按长宽比缩放图片

    本文将介绍如何使用Python的PIL(Pillow)库来实现按长宽比缩放图片,并在缩放后填充空白部分为黑色。PIL库是Python的一个强大的图像处理模块,提供了丰富的图像处理功能。 首先,我们需要导入PIL库中的Image模块,...

    上传图片客户端判断大小,javascript获得上传图片的大小

    不用IE控件(ActiveXObject)不用 Img属性 上传图片客户端判断大小,javascript获得上传图片的大小 兼容所有浏览器,亲测可用 判断文件大小,判断上传图片的大小,图片格式

    jquery在Chrome下获取图片的长宽问题解决

    这个问题主要集中在Chrome浏览器上,尽管在IE和Firefox中能够正常获取,但在Chrome中可能会遇到问题。这个问题的核心在于,当尝试获取图片的尺寸时,浏览器可能尚未完成图片的加载。 首先,我们要理解为什么在某些...

    java图片上传、控制大小、宽度高度和图片裁剪并保存

    例如,保持图片原有宽高比时,需要计算新的宽度和高度,使得图片按比例缩放。可以使用以下公式: ``` 新宽度 = 原宽度 * (目标高度 / 原高度) 新高度 = 原高度 * (目标宽度 / 原宽度) ``` 其中,如果目标宽度或...

    技巧181掌握绘图区的长宽比例共2页.pdf.zip

    在IT领域,尤其是在图形设计、数据可视化以及计算机辅助设计(CAD)中,了解并掌握绘图区的长宽比例是一项至关重要的技能。标题"技巧181掌握绘图区的长宽比例共2页.pdf.zip"揭示了这个知识点的重点,即如何有效地...

    上传图片时等比例缩小图片

    上传图片时等比例缩小图片,内存、长宽都会变小的那种

    用JavaScript自动生成等比例缩略图

    因此,我们需要计算出一个缩放比例,使得缩略图的宽度或高度与原始图片的对应边相等,而另一条边按比例缩放。 ```javascript const maxWidth = 200; // 设定最大宽度或高度 const maxHeight = 200; const ...

    图片上传-可以限制图片的大小和类型

    在IT领域,图片上传功能是网站、应用及各种在线服务中常见的需求。为了提供良好的用户体验并确保系统稳定运行,开发者通常需要对用户上传的图片进行一些限制,包括图片的大小和类型。以下是对这一主题的详细说明: ...

    按比例图片尺寸(无白边)

    标题“按比例图片尺寸(无白边)”指的是在保持原始图像长宽比的基础上,调整图片的大小,以确保图像不失真,同时不添加任何多余的白边。这种做法对于保持图片的视觉效果和完整性至关重要,特别是当你希望图片在不同...

    android 自定义的处理SD卡下的图片,长宽压缩和质量压缩,大于2M循环长宽压缩一半,如果图片还大于1M,循环质量压缩

    最近公司的一些项目,有很多客服反应,拍照上传的订单及发票看不清,后台查看安卓上传的图片都在100K以下,上传的图片不管大小多大都自动宽高压缩的一半。网上找半天没有合适的方法处理,最后只能自己写了个方法,...

    在图片加载完毕前js获取图片长宽尺寸

    要么是在DOM中写入,要么就是等图片加载完毕后才开始获取,用户体验极其不好,今天特意整理一个办法,可以让javascript在html加载完毕后就可以立即获取img文件的头数据,非常快速的将图片的真实尺寸展现在你面前,...

    js图片等比例缩放

    在探讨“js图片等比例缩放”的主题时,我们深入解析了如何利用JavaScript来实现图片的等比例缩放,这是一个在网络开发中极为实用且常见的需求。等比例缩放的目的是为了适应不同尺寸的屏幕或布局需求,同时保持图片...

    PHP等比例缩放图片计算以及上传函数

    接下来是第二个函数,用于处理上传图片并按指定尺寸进行等比例缩放。我们可以创建一个名为`uploadAndResizeImage($file, $targetDir, $width, $height)`的函数,它接受上传的文件对象、目标保存目录、目标宽度和高度...

    net上传图片 自定义图片截取

    在IT行业中,尤其是在Web开发领域,用户经常需要上传图片并进行一些定制化的处理,比如截取图片的特定区域。这个任务通常涉及到前端的JavaScript技术,以及可能的后端处理。以下将详细介绍“net上传图片自定义图片...

    js 图片上传前大小长宽验证代码

    ### js 图片上传前大小长宽验证知识点 #### 1. 图片预览与信息获取 在进行图片上传前,需要实现图片的预览以及获取图片的尺寸信息。在JavaScript中,可以通过创建一个`Image`对象来实现。实例化一个`Image`对象后,...

    自适应图片大小比例的3D立体图片展示效果

    然后,我们可以计算出图片的长宽比,将这个比例应用到图片的容器元素上,确保图片在任何情况下都能按比例填充。为了防止图片失真,我们通常会设置容器的宽度为固定值,而高度则根据图片比例自动调整,或者反之。 在...

Global site tag (gtag.js) - Google Analytics