上传图像后如何预览 js

如题所述

方法如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Firefox3,IE6,IE7,IE8上传图片预览</title> 
<style type="text/css"> 
#preview_wrapper{   
    display:inline-block;   
    width:300px;   
    height:300px;   
    background-color:#CCC;   
}   
#preview_fake{ /* 该对象用户在IE下显示预览图片 */   
    filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale);   
}   
#preview_size_fake{ /* 该对象只用来在IE下获得图片的原始尺寸,无其它用途 */   
    filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=image);     
    visibility:hidden;   
}   
#preview{ /* 该对象用户在FF下显示预览图片 */   
    width:300px;   
    height:300px;   
}   
</style> 
 
<script type="text/javascript"> 
function onUploadImgChange(sender){   
    if( !sender.value.match( /.jpg|.gif|.png|.bmp/i ) ){   
        alert('图片格式无效!');   
        return false;   
    }   
        
    var objPreview = document.getElementById( 'preview' );   
    var objPreviewFake = document.getElementById( 'preview_fake' );   
    var objPreviewSizeFake = document.getElementById( 'preview_size_fake' );   
        
    if( sender.files && sender.files[0] ){   
        objPreview.style.display = 'block';   
        objPreview.style.width = 'auto';   
        objPreview.style.height = 'auto';   
            
        // Firefox 因安全性问题已无法直接通过 input[file].value 获取完整的文件路径   
        objPreview.src = sender.files[0].getAsDataURL();       
    }else if( objPreviewFake.filters ){    
        // IE7,IE8 在设置本地图片地址为 img.src 时出现莫名其妙的后果   
        //(相同环境有时能显示,有时不显示),因此只能用滤镜来解决   
            
        // IE7, IE8因安全性问题已无法直接通过 input[file].value 获取完整的文件路径   
        sender.select();   
        var imgSrc = document.selection.createRange().text;   
            
        objPreviewFake.filters.item(   
            'DXImageTransform.Microsoft.AlphaImageLoader').src = imgSrc;   
        objPreviewSizeFake.filters.item(   
            'DXImageTransform.Microsoft.AlphaImageLoader').src = imgSrc;   
            
        autoSizePreview( objPreviewFake,    
            objPreviewSizeFake.offsetWidth, objPreviewSizeFake.offsetHeight );   
        objPreview.style.display = 'none';   
    }   
}   
 
function onPreviewLoad(sender){   
    autoSizePreview( sender, sender.offsetWidth, sender.offsetHeight );   
}   
 
function autoSizePreview( objPre, originalWidth, originalHeight ){   
    var zoomParam = clacImgZoomParam( 300, 300, originalWidth, originalHeight );   
    objPre.style.width = zoomParam.width + 'px';   
    objPre.style.height = zoomParam.height + 'px';   
    objPre.style.marginTop = zoomParam.top + 'px';   
    objPre.style.marginLeft = zoomParam.left + 'px';   
}   
 
function clacImgZoomParam( maxWidth, maxHeight, width, height ){   
    var param = { width:width, height:height, top:0, left:0 };   
        
    if( width>maxWidth || height>maxHeight ){   
        rateWidth = width / maxWidth;   
        rateHeight = height / maxHeight;   
            
        if( rateWidth > rateHeight ){   
            param.width = maxWidth;   
            param.height = height / rateWidth;   
        }else{   
            param.width = width / rateHeight;   
            param.height = maxHeight;   
        }   
    }   
        
    param.left = (maxWidth - param.width) / 2;   
    param.top = (maxHeight - param.height) / 2;   
        
    return param;   
}   
</script> 
 
</head> 
 
<body> 
    <div id="preview_wrapper"> 
        <div id="preview_fake"> 
            <img id="preview" onload="onPreviewLoad(this)"/> 
        </div> 
    </div> 
    <br/> 
    <input id="upload_img" type="file" onchange="onUploadImgChange(this)"/> 
    <br/> 
    <img id="preview_size_fake"/> 
</body> 
</html>

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-01-22
这个简单, 你把图片上传服务器返回路劲就ok啦, 我有一个直接上传图片预览的js,不需要服务器,但是兼容性做的不够好,有些流浪器不支持。本回答被提问者和网友采纳
第2个回答  2014-01-22
你说的上传是指已经上传到服务器?还是只是控件选中了本地图片?

如果已经上传到服务器,直接使用服务器地址就可以预览了。

如果是控件选中本地图片,建议使用专门的flash上传控件,这样就可以做本地预览了。
第3个回答  2014-01-22
之前写的一个专门用于上传的js插件,希望对你有帮助
http://blog.csdn.net/sq111433/article/details/16872403
第4个回答  2014-01-23
这个我试验过,直接用js实现是比较困难的,并且只有ie浏览器支持,其他浏览器都不行的。做图片上传前就预览那就用flash上传吧。swfupload 图像上传 avatarEditor.swf

javascript怎么添加图片(js在图片上添加标记)
最好用插件,去layer官网有专门的点击图片,弹出浏览还支持多个图片。先去官网下载layer包,你的网页引用layer的js文件。这个实现一般有两用方式用js定义一个字符串变量,把图片的字符串写进去,然后div.innerhtml把这个字符串加进去。用类似jquery的js插件,也是先定义图片字符串变量,然后div.append这个字符...

怎么实现图片上传前预览功能呢?
用DOM来创建对象 在上面的XHTML代码中,我们为了预览图片,事先加入了一个没有设置src的img对象。除去不美观、代码冗余之外,如果用户浏览器不支持Javascrīpt,他不仅无法使用这个功能,还要接受页面上一个永远不会显示出来的破图。要解决这个问题,我们就需要在“运行时”再生成这个img对象,途径还是DOM。

如何获取网站js图片如何获取网站js图片
有两种方式供选择我推荐第一种,一:去阅读相关的网页里的js和网页请求之后的header,通过hander知道这个获取这个信息的接口。通过httpclient来获知你想要的信息。二:通过htmlunit框架提供的方法:JavascriptExecutorjsExecutor=(JavascriptExecutor)driver;jsExecutor.executeScript(LoginSubmit();,);这里的LoginSu...

PHP上传图片,前端展示大小统一问题
方法一:通过后台为图片生成展示时需要的缩略图。在图片上传的时候,创建一个宽度为100,高度为120的真彩色图像,并且将背景设置为透明,然后按照原始图像比例,将原始图像拷贝到这个真彩色画布上,这里需要计算拷贝的图像的大小,使图像宽度不超过100,高度不超过120,并且位于真彩色画布的正中间,那么前台只...

Compressor.js,一款基于浏览器的 JavaScript 图片压缩器,简单易用和...
使用 Compressor.js 的第一步是初始化 Compressor 对象,通过指定文件与可选配置参数完成。随后,只需一行代码即可执行压缩操作,并通过回调函数获取压缩后的图片。Compressor.js 提供丰富的配置选项,如调整压缩质量、限制输出图片大小等,满足多样化需求。下面展示一个基本示例代码。在实际项目中,合理应用 ...

使用image-compressor.js 解决图片压缩与 ios 拍照图片旋转问题_百度...
在使用 image-compressor.js 时,首先要根据 iOS 设备版本选择是否执行 checkOrientation 检查,其默认值为 true,即进行图片旋转方向的检测。处理结果采用 promise 对象形式返回,确保在压缩后得到的文件为 blob 类型。为了实现文件的上传,需要将压缩后的 blob 转换为 file 对象。在实际应用中,将 image-...

js 是如何判断 img 加载完成的?
第一种是使用img标签的load事件,这个事件会在图片加载完成之后触发,并执行img绑定的onload函数。第二种是使用readystatechange事件,这个事件会在图片的readyState属性发生变化时触发。第三种是使用complete属性,这个属性可返回浏览器是否已完成对图像的加载。如果加载完成,则返回true,否则返回false。

Axure图片上传原型怎么设计?
2.changeIMG,矩形记得确认设置了矩形的填充为图片。添加一个单击动作,填入代码:同时设定移入移出的交互,切换fileChose文本框的隐藏状态,以便根据交互动作重载JS脚本。3.fileTypeField,矩形这个是用来展示上传图片的格式的文本,非必要,没有交互脚本。四、第四步:创建动态面板通过创建动态面板,把不需要...

js点击图片图片变大了怎么办?
1。单击JavaScript图像。2。通过单击来更改img的src属性。3。更改为属性后,将图片设置为动画形式,放大1.5倍。4。在设置中找到动画时间,将动画时间设置为3秒。HTMLhover怎么让鼠标移上去图片变大?可以用js事件“onmouseover”和“onmouseout”来实现。1、新建html文档,在body标签中添加图片标签,为这个...

js如何获取图片显示时的大小尺寸
给img添加加载事件,图像加载完成才能获取图片的尺寸。html中添加onload function showSize(img){ alert(img.width);alert(img.height);} 或者js代码中添加onload let img=document.querySelector("div img");img.onload = function() { alert(img.height);alert(img.width);} ...

相似回答