• H5上传图片之canvas


    H5上传图片之canvas,使用canvas处理压缩图片再上传

    html代码:

    <form action="" method="post">
        <dl>
            <dd>
                <div>
                    <div id="img_wrap">
    
                    </div>
                    <input type="file" accept="image/jpg,image/jpeg,image/png,image/gif" id="fileImage" multiple="multiple" name="img" style="display:none" />
                    <a id="upimg" href="javascript:">上传图片</a>
                </div>
            </dd>
            <dd style="margin-top:10px;">
                <a id="abtn_submit" href="javascript:">提交</a>
            </dd>
        </dl>
    </form>

    js代码:

    <script type="text/javascript">
        $(function () {
            $("#abtn_submit").click(function () {
                if ($("input[name='imgs']").length < 1) {
                    layer.open({
                        content: '必须上传图片才能提交',
                        skin: 'msg',
                        time: 2
                    });
                    return;
                }
                $("form").submit();
            });
            $("#upimg").click(function () {
                $("#fileImage").click();
            })
            $("#fileImage").change(function () {
                $.each($(this)[0].files, function (i, e) {
                    if (!/image/w+/.test(e.type)) {
                        //请确保文件为图像类型
                        return;
                    }
                    imgHandle(e);
                })
            })
        });
    
        function imgHandle(_file) {
            var reader = new FileReader();
            reader.readAsDataURL(_file);
            reader.onload = function (e) {
                var result = e.target.result;
                var image = new Image();
                image.src = result;
                image.onload = function () {
                    var cvs = document.createElement("canvas");
                    var scale = 1;
                    if (this.width > 1000 || this.height > 1000) {
                        if (this.width > this.height) {
                            scale = 1000 / this.width;
                        }
                        else {
                            scale = 1000 / this.height;
                        }
                    }
                    cvs.width = this.width * scale;
                    cvs.height = this.height * scale;
                    var ctx = cvs.getContext("2d");
                    ctx.drawImage(this, 0, 0, cvs.width, cvs.height);
                    var newImageData = cvs.toDataURL(_file.type, 0.8);
                    var imgdata = "<a href='javascript:' onclick='delimg(this)'><img src="" + newImageData + "" />";
                    imgdata += "<input type="hidden" name="imgs" value="" + newImageData + "" /></a>";
                    $("#img_wrap").append(imgdata);
                }
            }
        }
    
        function delimg(e) {
            layer.open({
                content: '您确定要删除此图片吗?',
                btn: ['删除', '取消'],
                skin: 'footer',
                yes: function (index) {
                    $(e).remove();
                    layer.close(index);
                }
            });
        }
    </script>
    

      后台处理代码:

    //有图片时处理如下
                string[] imgs = collection.GetValues("imgs");
                List<U_Img> uimglist = new List<U_Img>();
                int i = 1;
                foreach (string imgBase64Str in imgs)
                {
                    int indexOf = imgBase64Str.IndexOf('/') + 1;
                    string ftype = imgBase64Str.Substring(indexOf, imgBase64Str.IndexOf(';') - indexOf);
                    string fex = ".jpg";
                    switch (ftype)
                    {
                        case "jpeg":
                        case "jpg":
                            fex = ".jpg";
                            break;
                        case "png":
                            fex = ".png";
                            break;
                        case "gif":
                            fex = ".gif";
                            break;
                    }
                    string Base64Str = imgBase64Str.Substring(imgBase64Str.IndexOf(',') + 1);
                    Base64Str = Base64Str.Trim('');
                    byte[] imgArr = Convert.FromBase64String(Base64Str);
                    using (MemoryStream ms = new MemoryStream(imgArr))
                    {
                        Bitmap bmp = new Bitmap(ms);
                        string fname = "/timg/" + DateTime.Now.ToString("yyMMddmmHHssffff") + i.ToString() + fex;
                        string FilePath = Request.MapPath(fname);
                        bmp.Save(FilePath);
                        uimglist.Add(new U_Img() { ImgUrl = fname, ImgTime = DateTime.Now });
                    }
                    i++;
                }
    

      

  • 相关阅读:
    封神台靶机练习第一章:SQL注入攻击原理
    java基础复习-自定义注解1(如何自定义注解?)
    java复习预科知识-Markdown学习
    leetcode-888-公平的糖果交换
    leetcode-884-两句话中的不常见单词
    leetcode-139-单词拆分(递归超时,动归解决)
    leetcode-134-加油站
    leetcode-91-解码方法(动态规划和递归两种解法)
    leetcode-56-合并区间
    leetcode-55-跳跃游戏
  • 原文地址:https://www.cnblogs.com/yuejin/p/9001921.html
Copyright © 2020-2023  润新知