zoukankan      html  css  js  c++  java
  • FileReader 与canvas结合使用显示图片

    话不多少,直接上代码

    function fileChange() {
                var file = this.files[0];
                var imageType = /^image//;
                //是否是图片
                if (!imageType.test(file.type)) {
                    layAlert("请选择图片!");
                    loadHide()
                    return;
                }
                //判断是否已经上传
                var fileState = false;
                var fileImgs = document.querySelectorAll('.imgName');
                for (var i = 0; i < fileImgs.length; i++) {
                    if (fileImgs[i].getAttribute('data-imgname') == file.name) {
                        fileState = true;
                    }
                }
                if (fileState == true) {
                    tishi('该图片上传过了')
                    return;
                }
                fnSetImgRelaod(file)
            }
            function fnSetImgRelaod(file) {
                if (!window.FileReader) {
                    layAlert("您的设备不支持图片预览功能,如需该功能请升级您的设备!");
                    loadHide()
                    return
                } else {
                    var reader = new FileReader(file);// FileReader 对象允许Web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容
                    reader.readAsDataURL(file);//开始读取指定的Blob对象或File对象中的内容. 当读取操作完成时,readyState属性的值会成为DONE,如果设置了onloadend事件处理程序,则调用之.同时,result属性中将包含一个data:URL格式的字符串以表示所读取文件的内容.
                    reader.onload = function (e) {
                        var fileImg = document.createElement('div');
                        $('#fileImg').siblings().show();
                        fileImg.className = 'fileImg prel';
                        document.querySelector('#fileImg').appendChild(fileImg);
                        var canvas = document.createElement("canvas");
                        canvas.className = 'canvas';
                        fileImg.appendChild(canvas);
                        var ctx = canvas.getContext("2d");
                        var image = new Image();
                        image.src = this.result;
                        image.onload = function () {
                            var cw = image.width;
                            var ch = image.height;
                            var w = image.width;
                            var h = image.height;
                            canvas.width = w;
                            canvas.height = h;
                            if (cw > 100 && cw >= ch) {
                                w = 100;
                                h = (100 * ch) / cw;
                                canvas.width = w;
                                canvas.height = h;
                            }
                            if (ch > 100 && ch >= cw) {
                                h = 100;
                                w = (100 * cw) / ch;
                                canvas.width = w;
                                canvas.height = h;
    
                            }
                            ctx.drawImage(image, 0, 0, w, h);
    
                            var imgBtn = document.createElement('sapn');
                            imgBtn.className = 'btn pabs';
                            imgBtn.innerText = '删除';
                            fileImg.appendChild(imgBtn);
                            var imgName = document.createElement('div');
                            imgName.className = 'imgName';
                            imgName.innerText = file.name;
                            imgName.setAttribute('data-imgname', file.name);
                            fileImg.appendChild(imgName);
    
                            imgBtn.onclick = function () {
                                $(this).parent().remove();
                            }
                            canvas.onclick = function () {
                                showImg(e.target.result)
                            }
                        }
                    }
                }
            }
  • 相关阅读:
    HDU Number Sequence
    HDU Wolf and Rabbit
    HDU Fire Net
    C# QQ weather
    Jquery 随窗口改变大小不会影响浏览位置,DIV可以在绝对的位置不变.菜单相对位置不变
    C# 验证中国电话号码,电子邮件,网址,身份证号码等等
    C# Image Download
    Csharp 两个DataTable或DataView互换,可以用来加密解密
    C# Windows Forms TreeView SelectedNode(VS2008)
    C# 获取源代码
  • 原文地址:https://www.cnblogs.com/cloud-k/p/7607850.html
Copyright © 2011-2022 走看看