前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >html上传图片

html上传图片

原创
作者头像
有勇气的牛排
发布于 2023-06-25 15:18:02
发布于 2023-06-25 15:18:02
81600
代码可运行
举报
运行总次数:0
代码可运行

方案一

代码语言:html
AI代码解释
复制
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title>头像</title>
</head>

<script src="http://i.gtimg.cn/qzone/biz/gdt/lib/jquery/jquery-2.1.4.js?max_age=31536000"></script>

<script src="js/avator.js"></script>

<body>
<input type="file" id="upLoad" name="image">
<!-- 显示上传之后的图片 -->
<div id='previewImg'>
    <img src="" id='viewImg' style="height: 200px;"/>
</div>
<button id="submit">提交</button>

</body>
</html>
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$(function () {
    var imgsrc = ''

    $("#submit").click(function () {
        alert(imgsrc);
        $.ajax({
            url: '/avatar',
            type: 'POST',
            dataType: 'json',
            data: {
                'imgsrc': imgsrc
            },
            success: function (res) {
                alert('666');
            },
            error: function () {
                alert('123');
            }
        });

    });


    $('#upLoad').on('change', function () {
        var filePath = $(this).val(),         //获取到input的value,里面是文件的路径
            fileFormat = filePath.substring(filePath.lastIndexOf(".")).toLowerCase(),
            imgBase64 = '',      //存储图片的imgBase64
            fileObj = document.getElementById('upLoad').files[0]; //上传文件的对象,要这样写才行,用jquery写法获取不到对象

        // 检查是否是图片
        if (!fileFormat.match(/.png|.jpg|.jpeg/)) {
            alert('上传错误,文件格式必须为:png/jpg/jpeg');
            return;
        }

        alert(fileObj.size / 1024);
        if (fileObj.size / 1024 > 20000) {
            // alert('大于200k');
            // 调用函数,对图片进行压缩
            compress(fileObj, function (imgBase64) {
                imgBase64 = imgBase64;    //存储转换的base64编码
                imgsrc = imgBase64;
                $('#viewImg').attr('src', imgBase64); //显示预览图片
            });
        } else {
            // alert('小于200k');
            // 调用函数,不对图片进行压缩
            directTurnIntoBase64(fileObj, function (imgBase64) {
                imgBase64 = imgBase64;    //存储转换的base64编码
                imgsrc = imgBase64;
                $('#viewImg').attr('src', imgBase64); //显示预览图片
            });
        }
    });

    // 不对图片进行压缩,直接转成base64
    function directTurnIntoBase64(fileObj, callback) {
        var r = new FileReader();
        // 转成base64
        r.onload = function () {
            //变成字符串
            imgBase64 = r.result;
            console.log(imgBase64);
            callback(imgBase64);
        }
        r.readAsDataURL(fileObj);    //转成Base64格式
    }

    // 对图片进行压缩
    function compress(fileObj, callback) {
        if (typeof (FileReader) === 'undefined') {
            console.log("当前浏览器内核不支持base64图标压缩");
            //调用上传方式不压缩
            directTurnIntoBase64(fileObj, callback);
        } else {
            try {
                var reader = new FileReader();
                reader.onload = function (e) {
                    var image = $('<img/>');
                    image.load(function () {
                        square = 390,   //定义画布的大小,也就是图片压缩之后的像素
                            canvas = document.createElement('canvas'),
                            context = canvas.getContext('2d'),
                            imageWidth = 0,    //压缩图片的大小
                            imageHeight = 0,
                            offsetX = 0,
                            offsetY = 0,
                            data = '';

                        canvas.width = square;
                        canvas.height = square;
                        context.clearRect(0, 0, square, square);

                        if (this.width > this.height) {
                            imageWidth = Math.round(square * this.width / this.height);
                            imageHeight = square;
                            offsetX = -Math.round((imageWidth - square) / 2);
                        } else {
                            imageHeight = Math.round(square * this.height / this.width);
                            imageWidth = square;
                            offsetY = -Math.round((imageHeight - square) / 2);
                        }
                        context.drawImage(this, offsetX, offsetY, imageWidth, imageHeight);
                        var data = canvas.toDataURL('image/jpeg');
                        //压缩完成执行回调
                        callback(data);
                    });
                    image.attr('src', e.target.result);
                };
                reader.readAsDataURL(fileObj);
            } catch (e) {
                console.log("压缩失败!");
                //调用直接上传方式  不压缩
                directTurnIntoBase64(fileObj, callback);
            }
        }
    }
});

方案2

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
<input type="file"><br>
<img src="" height="200" alt="Image preview area..." title="preview-img">
<script>
  var fileInput = document.querySelector('input[type=file]'),
          previewImg = document.querySelector('img');
  fileInput.addEventListener('change', function () {
      var file = this.files[0];
      var reader = new FileReader();
      // 监听reader对象的的onload事件,当图片加载完成时,把base64编码賦值给预览图片
      reader.addEventListener("load", function () {
          previewImg.src = reader.result;
      }, false);
      // 调用reader.readAsDataURL()方法,把图片转成base64
      reader.readAsDataURL(file);
  }, false);
</script>
</body>
</html>

参考:

https://www.cnblogs.com/xh_Blog/p/8269581.html

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
重大改革—Python语言将入选高考科目
作者:改编自海码爸爸 1956年,人工智能概念首次被提出,之后经历了60年的浮沉起落,人工智能产业一直在曲折中前进,如今,人工智能已成为最炙手可热的产业之一。麦肯锡全球研究院就认为人工智能正在促进人类社会发生转变,这种转变将比工业革命“发生的速度快10倍,规模大300倍,影响几乎大3000倍。埃森哲最近的一项分析显示,到 2035 年,AI 有可能在中国的经济增长率上增加 1.6 个百分点。 未来已来,就如互联网浪潮一样,AI也必将创造一个全新的世界。面对大势所趋,许多人开始与时俱进地研究AI知识,想跨入
钱塘数据
2018/03/06
9350
重大改革—Python语言将入选高考科目
这是一份腾讯给全国青少年的人工智能课程大礼包 请收好!
2020年的寒假,因为疫情的突袭而变得特殊:孩子们的假期将在家中度过,同时原定的开学日也将延迟。日前,教育部发文特别提醒,各地在原计划的正式开学日之前,可安排一些疫情防护知识、心理健康辅导、寓教于乐等方面的网上学习内容,确保学生度过愉快的假期。 为了给孩子们打造更加丰富、有趣、有意义的寒假,腾讯教育充分发挥互联网在线价值,联合了腾讯青少年科技学院、腾讯扣叮专家团队,共同编写了一套内容丰富的人工智能零基础精品课程,疫情期间免费向全国中小学师生开放。课堂包括《人工智能科普课-中学及教师定制版》、《人工智能
鹅老师
2020/06/10
1.2K0
青少年编程教育现状
张叔叔从初中开始就上计算机课程,每周一节课,也没有什么固定的教材,老师按照大纲随便教,基本就是复制粘贴,word以及ppt的使用等。后来高中也有信息技术课程,记得半个月一节课,当时基本把这种课程当成课外休闲课了,因为可以玩电脑。
张叔叔讲互联网
2018/10/29
2.4K0
从成绩平平到保送清华,如何变身“别人家的神童”?
80 90后想被清北复交等名校保送 如果没有学霸体质 大概会想到 “新概念作文” “国际奥数联赛” “全国物理竞赛” 当这届00后渐渐长大 保送也有了新玩法 “信息学奥赛”新鲜出炉 成为了大热的名校保送通道 80 90的叔叔阿姨们不禁挠头 “信息学”是啥 研究情报吗? Emmmmmm 用“out”来形容你 都觉得有些太“out”了 别人家的“神童”:靠编程提前被名校锁定 鹅老师先来科普一下,信息学奥赛可不是搞什么卧底情报,其实就是中小学生的编程竞赛。当孩儿爸妈还在感慨“敲代码”竟有如此神力
鹅老师
2020/06/10
7240
浙江新增python编程_9月起,浙江省八年级新增Python编程课,未来编程是处理大数据的手段…「建议收藏」
浙江官方教育部宣布:今年9月份开始的新学期,三到九年级信息技术课将替换新教材。其中,八年级将新增Python课程内容。新高一信息技术编程语言由VB替换为Python,大数据、人工智能、程序设计与算法等内容按照教材规划五六年级开始接触。
全栈程序员站长
2022/08/27
1.2K0
一统AI界的当红炸子鸡Python,这次要进入小学生课堂了!
学好Python,从娃娃抓起。 “Python语言要加入高考科目”,听到这个消息,镁客君瞬间抖三抖,还好毕业早! 然后一搜消息,发现Python语言不愧是是AI编程语言界的当红炸子鸡: Python将进入山东小学教材; 2018年起,Python列入全国计算机等级考试; 北京、山东确定要把Python编程基础纳入信息技术课程和高考的内容体系。 …… 不过查到消息源,我们发现只是浙江省某个高校的信息技术老师,无意中唠嗑时候提到的“明年浙江省信息技术教材改学简单易懂的Python语言”,然后在三人成虎的传播下,
镁客网
2018/05/30
7120
号外!号外!Python纳入高考内容了!人工智能时代就要来临了!
就在前几天,和一位高校的信息技术老师聊天,我得到了一个震惊的消息:明年,浙江省信息技术教材将不会在使用晦涩难懂的VB语言,而是改学更简单易懂的Python语言。也就是说: Python语言将纳入高考内容之一。 编程语言在升学中的比重逐渐加大,将要成为高考加分的一大利器。 Python将被纳入高考内容! 浙江省信息技术课程改革方案已经出台,Python确定进入浙江省信息技术高考,从2018年起浙江省信息技术教材编程语言将会从vb更换为Python。 其实不止浙江,教育大省北京和山东也确定要把Python编程基
企鹅号小编
2018/01/19
1.4K0
号外!号外!Python纳入高考内容了!人工智能时代就要来临了!
进军人工智能 —疯狂的Python入门精讲
2017年年底,一个“Python将纳入高考”的新闻在小编的朋友圈被刷屏,一时间,很多人奔走相告。消息的内容是: “近期,浙江省信息技术课程改革方案出台。从2018年起浙江省信息技术教材编程语言将会从
腾讯NEXT学位
2018/05/14
1.1K0
【教育部出大招】人工智能进入全国高中新课标,2018秋季学期执行
【导读】1月16日上午,教育部召开新闻发布会,介绍了《普通高中课程方案和语文等学科课程标准(2017年版)》的有关情况。在此次“新课标”改革中,正式将人工智能、物联网、大数据处理正式划入新课标。201
小莹莹
2018/04/20
5720
【教育部出大招】人工智能进入全国高中新课标,2018秋季学期执行
python编程考试有哪些(python编程考试模拟题)
2021国内外主流机器人编程赛事+等级考试Scratch编程、C++编程、Python编程等多个赛项,评比类、竞技类不同比赛形式自主选择。多个国内外主流机器人编程赛事,总能帮助孩子找到施展能力、表现创意的舞台。机器人、编程、人工智能等级考试篇全国青少年机器人技术等级考试和全国青少年软件编程等级考试均由中国电子…。
全栈程序员站长
2022/08/29
7450
python编程考试有哪些(python编程考试模拟题)
腾讯与NOC达成战略合作 联合举办“扣叮创意编程”“AI创想家”两大赛事
12月20日,腾讯与全国中小学信息技术创新与实践大赛组委会在腾讯北京总部举办战略签约,自2022年起将联手举办全国性中小学编程及人工智能赛事,共同助力青少年人工智能教育发展。 NOC大赛主办单位城乡统筹发展研究中心主任谢华平,NOC大赛主办单位中国人工智能学会副理事长、中国科学院自动化研究所副所长、研究员刘成林,NOC大赛全国组委会副主任、中国信息技术教育杂志社社长李维福,NOC大赛全国组委会秘书长、中国信息技术教育杂志社常务副社长任晓姮,腾讯教育副总裁王涛,腾讯互娱用户平台部总经理、腾讯未成年人保护
鹅老师
2021/12/21
1.1K0
人工智能浪潮前,从娃娃开始抓起的Python该怎么学?
未来已来 如同互联网发展的浪潮,AI正在创造一个全新的世界。 面对AI发展的新浪潮,越来越多的人开始涉足AI领域,研究AI知识,跨入AI大门。而Python,Python作为2017年最受欢迎的人工智
CDA数据分析师
2018/02/05
9940
人工智能浪潮前,从娃娃开始抓起的Python该怎么学?
腾讯青少年科技学院:助力青少年不一样的“战疫”假期
2020年的寒假,对于全国各地的中小学生来说注定是个不平凡的假期。 在这个特殊的寒假,腾讯青少年科技学院秉持着用科技助力K12教育的初心,在腾讯公司科技向善的使命号召下,不断探索基础教育阶段的科技教育理念及实践,为青少年打造了腾讯Mini鹅创想营、腾讯创想编程线上直播课、“AI未来”科普课等多场线上、线下公益科技教育活动,用科技的力量点亮青少年的假期时光,在这场“战疫”中为孩子们的寒假生活画上了充实且有意义的一笔。 腾讯Mini鹅创想营 当年轻的脑洞遇上互联网科技 2020年1月21日上午,腾讯Min
鹅老师
2020/06/10
1K0
或许,这会是全民皆知的一门编程语言
不久前,国务院印发了《新一代人工智能发展规划》,其中明确指出,要实施全民智能教育项目,在中小学阶段设置人工智能相关课程,逐步推广编程教育,鼓励社会力量参与寓教于乐的编程教学软件、游戏的开发和推广。 浙江省已经将信息技术课程纳入了高考,编程语言是VB,教育部考试中心于2017年10月11日发布了“关于全国计算机等级考试(NCRE)体系调整”的通知,决定自2018年3月起,在计算机二级考试加入了“Python语言程序设计”科目。接着,早先的风声又进一步传开,Python将代替VB进入浙江省信息技术高考。
java达人
2018/01/31
6490
或许,这会是全民皆知的一门编程语言
或许,这会是全民皆知的一门编程语言
不久前,国务院印发了《新一代人工智能发展规划》,其中明确指出,要实施全民智能教育项目,在中小学阶段设置人工智能相关课程,逐步推广编程教育,鼓励社会力量参与寓教于乐的编程教学软件、游戏的开发和推广。 浙江省已经将信息技术课程纳入了高考,编程语言是VB,教育部考试中心于2017年10月11日发布了“关于全国计算机等级考试(NCRE)体系调整”的通知,决定自2018年3月起,在计算机二级考试加入了“Python语言程序设计”科目。接着,早先的风声又进一步传开,Python将代替VB进入浙江省信息技术高考。 浙
企鹅号小编
2018/02/28
7490
或许,这会是全民皆知的一门编程语言
python纳入小学生教材,以后该如何辅导娃的作业?
前言 python的学习势在必行,至于为什么要学python,这个不是本篇要熬的鸡汤。身边的小伙伴很多已经为人父母,或者正在路上。。。 现在幼儿园的作业不是布置给学生的,而是给家长的,如果有一天小学老师布置一个作业,让家长和孩子一起完成一段编程,那是多么美滋滋的一件事情。 “python写进小学生课本”,“python列入高考“”,“python进入大学计算机等级考试“,这些新闻已经火的一塌糊涂。 python小学生课本 山东省最新出版的小学信息技
上海-悠悠
2018/04/08
3K0
python纳入小学生教材,以后该如何辅导娃的作业?
史无前例!Python将被加入高考科目
Python 将被纳入高考科目 2017年初消息: 浙江省信息技术新教材,即将在2017级(2017年9月入学)高中新生中开始使用。 据了解,与目前的选考(可以理解为高考科目)要求的信息技术教材由3本《信息技术基础》、《多媒体技术应用》、《算法与程序设计》3本组成,涉及软件(应用软件与编程软件)包括但不限于, 信息技术基础:Excel、Access; 多媒体技术应用:Photoshop、Flash 算法与程序设计:Visual Basic 6.0,算法部分只涉及冒泡、插入排序,与二分查找,不同, - 取消《
BestSDK
2018/03/02
2.1K0
史无前例!Python将被加入高考科目
少年强则互联网强!编程猫这份报告藏着一座新金矿
互联网上每天都有热点,相当一部分热点来自于娱乐八卦,在微博不断增加“服务器”时,明星们也炙手可热,疯狂吸金,或许正是因如此,经常会看到媒体报道,如今的年轻人特别是05后对科学家什么的已经没有兴趣,相当一部分05后长大的愿望是做明星。
罗超频道
2019/01/08
9330
中国幼儿园AI教材曝光!谷歌专家指导,娃娃也要学Python!
最近,网上流传一组《人工智能实验教材》的图片,教材是为幼儿园小班的小朋友们设计,还只是上册。
新智元
2018/12/18
9100
中国幼儿园AI教材曝光!谷歌专家指导,娃娃也要学Python!
万字长文,全面解读小孩学编程?
有一天小码匠跟我说,学编程有助于锻炼她的逻辑思维,每次写算法,她都会先思考逻辑,想明白了才动手写,
小码匠
2022/06/16
7910
万字长文,全面解读小孩学编程?
推荐阅读
相关推荐
重大改革—Python语言将入选高考科目
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档