单张图片在线预览+图片压缩

该方法未测试浏览器兼容性,仅在谷歌上进行过测试。

图片在线预览:一般思路是通过获取file上的绝对路径并将路径赋值给src实现在线预览功能,但现实中的浏览器,尤其是高版本浏览器由于用户安全性考虑,不会让开发者通过file获取到绝对路径,因此使用H5中的画板功能,将图片进行重绘后,得到base64编码的dataURL,再将这个地址赋值给src实现在线预览功能。

图片压缩原理:将大图根据预定尺寸进行尺寸修改。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <p>
        <img src="images/186.jpg" alt="" id="imgInp">
    </p>
    <p>
        <input type="file" id="fileInp">
    </p>
</body>
<script src="https://cdn.bootcss.com/jquery/1.11.3/jquery.js"></script>
<script type="text/javascript">
    $(‘#fileInp‘).on(‘change‘,function(){
        imgPreView();
    })
    function imgPreView(){
        var f = $(‘#fileInp‘)[0].files[0];
        if(window.FileReader){
            var reader = new FileReader();
        }else {
            alert("您的设备不支持图片预览功能,如需该功能请升级您的设备!");
        }
        //对图片类型进行正则判断,imageType打印出来的信息是     image/jpeg
        var imageType  = /^image\//;
        if(!imageType.test(f.type)){
            alert("请选择图片!");
            return;
        }
        var image = new Image();     //根据宽高对图片进行处理,很有意思的逻辑,大家可以思考思考。
        image.onload = function(){
            var w = 1000;
            var h = 1000;

            var nw = this.naturalWidth;
            var nh = this.naturalHeight;

            var targetw = 0;
            var targeth = 0;

            if (nw > nh) {
                if (nw > w) {
                    targetw = w;
                } else {
                    targetw = nw;
                }
                targeth = nh / nw  * targetw ;

            } else {
                if (nh > h) {
                    targeth = h;
                } else {
                    targeth = nh;
                }
                targetw = targeth / nh * nw;
            }

            var cvs = document.createElement(‘canvas‘);
            var ctx = cvs.getContext("2d");
            cvs.width = targetw;
            cvs.height = targeth;
            ctx.drawImage(image,0,0,nw,nh,0,0,cvs.width,cvs.height);

            var newImageData = cvs.toDataURL("image/jpeg");

            //$(".userHead").val(newImageData.split("base64,")[1]);
        }

        reader.onload = function(e){
            $("#imgInp").attr("src",e.target.result);
            image.src = e.target.result;
        };
        reader.readAsDataURL(f);
    }
</script>
</html>

原文地址:https://www.cnblogs.com/xiaohualu/p/9840290.html

时间: 2024-08-01 10:46:30

单张图片在线预览+图片压缩的相关文章

pdf.js实现图片在线预览

项目需求 前段时间项目中遇到了一个模块,是关于在线预览word文档(PDF文件)的,所以,找了很多插件,例如,pdf.js,pdfobject.js框架,但是pdfobject.js框架对于IE浏览器不兼容,所以,选择了使用pdf.js,这里记录一下,以后使用的时候好查找,也希望可以帮助有需要的人. word文件转pdf文件 首先需要将指定的word文档转为pdf文件,方法有很多,这里不介绍,有需要的童鞋可以去网上下载即可.我这里用的是OpenOffice,版本是4.1.6,使用很简单,下载好了

巧用weui.gallery(),点击图片后预览图片

要在页面需要加载的JS文件: <script src="../js/libs/weui.min.js"></script> 可以去weui的文档中下载,这是它的demo:   https://weui.io/weui.js/ 要先给图片创建一个节点: var imgDom = $("<img class='weui-jiaj-img' />"); 因为接口中取到的图片会是很多,因此,在循环图片数据的时候,要给每个图片添加一个动态的

html5上传本地图片,在线预览及裁剪(filereader,canvas)

1 我们常常需要上传头像,点击上传按钮时候需要预览一下,使用filereader方法无需和后台交互,代码如下: //本地图片在上传之前的预览效果 //图片上传预览 function previewImage(file) { if (file.files && file.files[0]) { var img = document.getElementById('imghead'); var reader = new FileReader(); //读取file完成之后加载 reader.o

Office在线预览及PDF在线预览的实现方式大集合

一.服务器先转换为PDF,再转换为SWF,最后通过网页加载Flash预览 微软方:利用Office2007以上版本的一个PDF插件SaveAsPDFandXPS.exe可以导出PDF文件,然后再利用免费的swftools.exe工具生成swf格式的Flash文件,网页中加载flexpaper免费开源工具(有广告)实现Flash文件的预览.优点:1.有效的保护的源文件及文件的复制,不可复制也是缺点.2.源码是自己的,版权有保证.缺点:1.服务器上必须安装Office软件.2.导出PDF文件本身是个

Office在线预览及PDF在线预览的实现方式史上最全大集合

Office在线预览及PDF在线预览的实现方式大集合 一.服务器先转换为PDF,再转换为SWF,最后通过网页加载Flash预览 微软方:利用Office2007以上版本的一个PDF插件SaveAsPDFandXPS.exe可以导出PDF文件,然后再利用免费的swftools.exe工具生成swf格式的Flash文件,网页中加载flexpaper免费开源工具(有广告)实现Flash文件的预览.优点:1.有效的保护的源文件及文件的复制,不可复制也是缺点.2.源码是自己的,版权有保证.缺点:1.服务器

html5 图片上传,支持图片预览、压缩、及进度显示,兼容IE6+及标准浏览器

原文:html5 图片上传,支持图片预览.压缩.及进度显示,兼容IE6+及标准浏览器 以前写过上传组件,见 打造 html5 文件上传组件,实现进度显示及拖拽上传,兼容IE6+及其它标准浏览器,对付一般的上传没有问题,不过如果是上传图片,且需要预览的话,就力有不逮了,趁着闲暇时间,给上传组件添加了单独的图片上传UI,支持图片预览和缩放(通过调整图片的大小以实现图片压缩). 上传组件特点 轻量级,不依赖任何JS库,核心代码(Q.Uploader.js)仅约700行,min版本加起来不到12KB 纯

H5图片预览、压缩、上传

目标实现: 1.选择图片, 前端预览效果 2.图片大于1.2M的时候, 对图片进行压缩 3.以表单的形式上传图片 4.图片删除 预览效果图: 代码说明: 1.input:file选择图片 <!-- html部分 --> <ul id="preview" class="clear"> <li class="fl"> <img src="/images/audition/icon_upload.pn

微信小程序预览图片

选择图片时可设置图片是否是原图,图片来源.这用的也挺常见的,比如个人中心中设置头像,可以与wx.upLoadFile()API使用 主要方法: wx.chooseImage(object) wxml <!--监听按钮--> <button type="primary" bindtap="listenerButtonChooseImage">点击我选择相册</button> <!--通过数据绑定的方式动态获取js数据-->

iOS HTML图片本地预览

1.引言 相信用过苹果手机的童鞋,会发现很多新闻类的应用,都可以实现HTML图片本地预览,那么这是如何实现的呢?本文将深入阐述其中的原理. 关于此功能,我还实现了一个DEMO,大家可以点击此访问更详细内容 2.原理 接触过web开发的人,就了解与html元素交互都是通过javascript进行的,比如点击.滑动等,比如点击标签的响应代码如下 var img = document.getElementById('test'); img.onclick = function() { do some