图片转base64的几种场景(网络图片,本地图片,用户上传图片)

转载于博客园 

https://www.cnblogs.com/zhangdiIT/p/7895903.html

写的很棒  推荐给大家

 

场景一:将用户本地上传的资源转化,即用户通过浏览器点击文件上传时,将图片资源转化成base64:

<input type="file" id="image"><br/>
复制代码
var reader = new FileReader();var AllowImgFileSize = 2100000; //上传图片最大值(单位字节)( 2 M = 2097152 B )超过2M上传失败var file = $("#image")[0].files[0];var imgUrlBase64;if (file) {//将文件以Data URL形式读入页面  imgUrlBase64 = reader.readAsDataURL(file);reader.onload = function (e) {//var ImgFileSize = reader.result.substring(reader.result.indexOf(",") + 1).length;//截取base64码部分(可选可不选,需要与后台沟通)if (AllowImgFileSize != 0 && AllowImgFileSize < reader.result.length) {alert( '上传失败,请上传不大于2M的图片!');return;}else{//执行上传操作alert(reader.result);}}}          
复制代码

场景二:将本项目中的图片资源转化成base64,(我还没有用到过此场景,感觉场景二也可以通过场景三来实现)

复制代码
    function(){var url = "static/img/js1.jpg";//这是站内的一张图片资源,采用的相对路径convertImgToBase64(url, function(base64Img){//转化后的base64alert(base64Img);});             }//实现将项目的图片转化成base64function convertImgToBase64(url, callback, outputFormat){var canvas = document.createElement('CANVAS'),ctx = canvas.getContext('2d'),img = new Image;img.crossOrigin = 'Anonymous';img.onload = function(){canvas.height = img.height;canvas.width = img.width;ctx.drawImage(img,0,0);var dataURL = canvas.toDataURL(outputFormat || 'image/png');callback.call(this, dataURL);canvas = null; };img.src = url;}    
复制代码

场景三:将网络图片资源转化为base64,(感觉场景二中的资源换成绝对路径即可使用在场景三中)

复制代码
    function(){//这是网上的一张图片链接var url="http://p1.pstatp.com/large/435d000085555bd8de10";getBase64(url).then(function(base64){console.log(base64);//处理成功打印在控制台},function(err){console.log(err);//打印异常信息});                        }    //传入图片路径,返回base64function getBase64(img){function getBase64Image(img,width,height) {//width、height调用时传入具体像素值,控制大小 ,不传则默认图像大小var canvas = document.createElement("canvas");canvas.width = width ? width : img.width;canvas.height = height ? height : img.height;var ctx = canvas.getContext("2d");ctx.drawImage(img, 0, 0, canvas.width, canvas.height);var dataURL = canvas.toDataURL();return dataURL;}var image = new Image();image.crossOrigin = '';image.src = img;var deferred=$.Deferred();if(img){image.onload =function (){deferred.resolve(getBase64Image(image));//将base64传给done上传处理}return deferred.promise();//问题要让onload完成后再return sessionStorage['imgTest']}}
复制代码

至此,便将图片base64转码的三种场景介绍完毕了,下面是基于以上的一下拓展:

拓展一:后台需要以纯字符串的形式上传(即去掉data:image/png;base64,截取字符串即可)

reader.result.substring(reader.result.indexOf(",") + 1)

拓展二:判断base64资源大小,超过2M不让上传

    var AllowImgFileSize = 2100000;    //上传图片最大值(单位字节)( 2 M = 2097152 B )if (AllowImgFileSize != 0 && AllowImgFileSize < reader.result.length) {alert( '上传失败,请上传不大于2M的图片!');return;}

其中reader.result即是base64转码后的结果。以上便是对网络上的一些资源的整理,亲测可用。如有不对可以留言交流。

转载于:https://www.cnblogs.com/lanshengzhong/p/8602608.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/70857.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C实现响应浏览器HTTP GET请求上传图片

参考链接&#xff1a; 1.C 实现一个简易的Http服务器 https://www.cnblogs.com/life2refuel/p/5277111.html 2.C&#xff1a;C语言实现HTTP的GET和POST请求 https://www.cnblogs.com/diligenceday/p/6255788.html 因为工作需要&#xff0c;需要实现在嵌入式设备上响应浏览器的…

input file 实现上传预览图片,以base64上传,兼容IE8+,firefox,chrome

前言 最近在公司开发一个项目&#xff0c;其中涉及到一个公能&#xff0c;主要是上传一些小图片&#xff0c;而且在网站上需要大量引用这个小图片的&#xff0c;对于上传一些小的头像等。一开始觉得直接上传就好了&#xff0c;但是发现这样子的话&#xff0c;一个小图片就会发…

关于微信内置浏览器,打开图片上传功能,调用的问题

关于微信内置浏览器&#xff0c;打开图片上传功能&#xff0c;调用的问题 前段时间&#xff0c;项目完结测试的时候&#xff0c;同事打开魅族手机测试&#xff0c;无意中发现一个奇葩的问题&#xff01; 描述&#xff1a; 显示的是文件系统&#xff0c;列表式的&#xff0c;没有…

A-Level化学例题解析及练习

今日知识点&#xff1a;Ionisation energy and valence electrons 例题 The table gives the successive ionisation energies for an element X. What could be the formula of the chloride of X A XCl B XCl2 C XCl3 D XCl4 解析 Answer: C Definition of…

一枚Android 短信小偷 病毒的分析

一、样本简介 样本来自于吾爱破解论坛链接地址为http://www.52pojie.cn/thread-410238-1-1.html&#xff0c;样本不是很复杂有空就分析了一下。Android病毒样本还是很有意思的&#xff0c;有需要分析的样本发到论坛分析分析。 二、样本信息 文件名称&#xff1a;10086.apk …

编程确定小偷

已知A、B、C、D四个人中有一人是小偷&#xff0c;并且&#xff0c;这四个人中每人要么说真话&#xff0c;要么说假话。在审问过程中&#xff0c;这四个人分别回答如下&#xff1a; A说&#xff1a;B没有偷&#xff0c;是D偷的。 B说&#xff1a;我没有偷&#xff0c;是C偷的。 …

【笔记】根据公交卡出行记录识别小偷

案例来源&#xff1a;Bowen Du 案例地址&#xff1a;http://www.kdd.org/kdd2016/papers/files/adf0629-duA.pdf &#xff08;以下为案例的简要概述&#xff0c;便于之后能快速检索到相关内容。部分文字与图片可能直接来自原文&#xff0c;如有侵权请告知&#xff0c;谢谢&…

小偷-守卫博弈:“诡异”的纳什均衡

目录 1.什么是小偷-守卫博弈&#xff1f; 2.用数学刻画博弈信息 3.我是小偷&#xff01; 4.我是守卫&#xff01; 5.尬住了。。。 6.一个感性的认识&#xff08;给参数赋些值&#xff09; 7.纯策略&#xff1f;混合策略&#xff01; 8.混合策略纳什均衡求解 9.结论&am…

C++实现U盘小偷(超详细版)

文章目录 前言一、程序演示二、项目下载三、源代码四、代码解析1.main函数2.RegisterGlobalKey与UnRegistreGlobalKey函数3.DealMsg函数4.FindDriver函数5.ThrToSearch线程搜索函数6.ThrToCopy线程拷贝函数7.FindAllFile函数 前言 对于C/C学习感兴趣的小伙伴&#xff0c;可以看…

一个简单的动态规划问题---小偷案例

Java算法训练—小偷案例 文章目录 Java算法训练---小偷案例 前言一、案例描述二、问题分析三、代码示例总结 前言 动态规划是一种算法技巧&#xff0c;先举一个例子&#xff1a;   如何让一个四岁的小孩理解动态规划的思路&#xff1f;国外友人有这样一个例子&#xff1a;列…

Python编程判断谁是小偷

谁是小偷 ‎小区发生盗窃案&#xff0c;有四个人嫌疑最大&#xff0c;警察找来讯问。‌ ‎A说&#xff1a;不是我。‌ ‎B说&#xff1a;是C。‌ ‎C说&#xff1a;是D。‌ ‎D说&#xff1a;他冤枉人。‌ ‎四人中有一人说了假话&#xff0c;编程分析谁是小偷。 此题主要…

焦耳小偷工作原理分析

当开关闭合&#xff0c;Q1获得基极电流导通&#xff0c;右侧线圈流过电流&#xff0c;由于同名端的关系其在左侧线圈产生的互感电动势上负下正&#xff0c;正反馈使得Q1迅速饱和导通。右侧电流处于饱和状态&#xff0c;感应电动势消失&#xff0c;互感电动势也消失。互感电动势…

c语言四个人中有一个人是小偷,、甲,乙,丙,丁四个人中有一个人是小偷,请根据四个人的谈话判断谁是小偷?已知四个人中有一个人说假话...

、甲,乙,丙,丁四个人中有一个人是小偷,请根据四个人的谈话判断谁是小偷?已知四个人中有一个人说假话 关注:65 答案:5 mip版 解决时间 2021-01-31 07:52 提问者酒瘾渼亽兒 2021-01-30 16:58 、甲,乙,丙,丁四个人中有一个人是小偷,请根据四个人的谈话判断谁是小偷?已…

推理题-谁是小偷?

警察抓住了A、B、C、D四名盗窃嫌疑犯&#xff0c;其中只有一人是小偷。在审问时&#xff0c; A说&#xff1a;“我不是小偷”&#xff1b; B说&#xff1a;“C是小偷”&#xff1b; C说&#xff1a;“小偷肯定是D”&#xff1b; D说&#xff1a;“C在冤枉好人”。 现在已经…

饥荒联机版专用服务器怎么修改小偷包,饥荒联机小偷背包代码 | 手游网游页游攻略大全...

发布时间&#xff1a;2016-08-14 饥荒海难小偷背包获得方法?饥荒失落之船刷小偷背包图文教程,饥荒海难里的小偷背包是格子最多的背包了,相信很多玩家都想拥有,但是小偷背包却不是那么好拿的,今天小编就为大家带来一套饥荒海难刷小偷背包图文教程,希望对大家有所帮助 ... 标签&…

【Multisim仿真】焦耳小偷电路仿真实验

【Multisim仿真】焦耳小偷电路仿真实验 Multisim仿真 本实验仿真平台&#xff1a;Multisim14 基本电路 仿真前的相关设置选项 变压器参数设置主副线圈绕组比例调整比例&#xff1a;10:10 铁芯设置选项&#xff1a; ###对变压器输出绕组端的电压进行瞬态电压进行捕捉 设置…

深度优先遍历算法-01小偷偷东西问题

小偷偷东西问题 前言 深度优先遍历是经典的图论算法&#xff0c;深度优先遍历算法的搜索逻辑和它的名字一样&#xff0c;只要有可能&#xff0c;就尽量深入搜索&#xff0c;直到找到答案&#xff0c;或者尝试了所有可能后确定没有解。简单来说&#xff0c;深度优先遍历就是按照…

百家云在人工智能领域再有新动作,发布应用于多个行业的AIGC解决方案

4月17日消息&#xff0c;音视频SaaS上市公司百家云&#xff08;股票代码&#xff1a;RTC&#xff09;今日宣布&#xff0c;公司将正式推出应用于多个垂直行业及场景的人工智能生成内容及视频解决方案。 百家云总裁马义表示&#xff0c;此次发布的解决方案&#xff0c;将在极短…

可以远程连接服务器,但是无法ping通问题

右键电脑&#xff0c;找到管理 在服务器管理里找到配置项 在配置项里找到 高级安全windows防火墙 在高级安全windows防火墙里&#xff0c;找到&#xff0c;按如下图示&#xff0c;找到“文件和打印机共享&#xff08;回显请求-ICMPv4-in&#xff09;双击。此时图片状态默…

解决连接vcenter (客户端无法向服务器发送完整的请求。(基础连接已经关闭:发送时发生错误。)) 问题...

vCenter版本 5.5 vCenter 安装在server 2008 r2上面&#xff0c;今天补丁一打&#xff0c;重启后就无法连接vcenter了&#xff0c;起初以为是补丁的问题导致vcenter工作不正常&#xff0c;卸载了补丁依旧无法正常连接。 报未知连接错误&#xff0c;&#xff08;客户端无法向服务…