HTML之图像数据base64、object file之间的相互转换

简介: HTML之图像数据base64、object file之间的相互转换

1、图片转换base64


function getImgToBase64(url,callback){//将图片转换为Base64
    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('image/png');
        callback(dataURL);
        canvas = null;
    };
    img.src = url;
}


2、base64转换成file object


function dataURLtoFile(dataurl, filename) {//将base64转换为文件
    var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],
    bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
    while(n--){
        u8arr[n] = bstr.charCodeAt(n);
    }
    return new File([u8arr], filename, {type:mime});
}
//可以将图片转换为base64
getImgToBase64('img/test.png',function(data){
   var myFile = dataURLtoFile(data,'testimgtestimgtestimg');
   console.log(myFile);
});

3、base64绘制到canvas上面


<canvas id="myCanvas" width="800" height="800"></canvas>
<script> 
var
    img = new Image();
    img.src=imgbase64;
    let myCanvas =$("#myCanvas").get(0);
    myCanvas.getContext('2d').drawImage(img,0,0);
    myCanvas.getContext('2d').fillText("32中文132",50,50);
</script>

   裁剪图片:

<script>
    var t = this;
    $(function(){
        $("#crop_img").click(function(){
            t.editPic = document.getElementById('edit_pic'); //
            let cord = document.getElementById("x_y").value;
            let x11=cord.split(",")[0];
            let y11=cord.split(",")[1];
            let x22=cord.split(",")[2];
            let y22=cord.split(",")[3];
            t.editPic.height = y22-y11;
            t.editPic.width = x22-x11;
            var ctx = t.editPic.getContext('2d');
            var images = new Image();
            images.src = document.getElementById('show_img').src;
            images.onload = function(){
                ctx.drawImage(images, x11, y11, x22-x11, y22-y11, 0, 0, x22-x11, y22-y11,);
                document.getElementById('show_crop').src = t.editPic.toDataURL("image/jpeg");
            };
        });
    });
</script>
<body>
    <img id="show_img" src=""><br />
    <canvas id="edit_pic"></canvas>
    <input type="text" name="coor" placeholder="坐标" readonly="true" id="x_y" style="width: 600px"><br>
    <img id="show_crop" src=""><br />
</body>


 


相关文章
|
1月前
|
XML 前端开发 数据格式
请描述如何使用`BeautifulSoup`或其他类似的库来解析 HTML 或 XML 数据。
【2月更文挑战第22天】【2月更文挑战第67篇】请描述如何使用`BeautifulSoup`或其他类似的库来解析 HTML 或 XML 数据。
|
1月前
|
关系型数据库 MySQL
mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file
mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file
64 0
|
1月前
|
XML 前端开发 数据格式
BeautifulSoup 是一个 Python 库,用于从 HTML 和 XML 文件中提取数据
【5月更文挑战第10天】BeautifulSoup 是 Python 的一个库,用于解析 HTML 和 XML 文件,即使在格式不规范的情况下也能有效工作。通过创建 BeautifulSoup 对象并使用方法如 find_all 和 get,可以方便地提取和查找文档中的信息。以下是一段示例代码,展示如何安装库、解析 HTML 数据以及打印段落、链接和特定类名的元素。BeautifulSoup 还支持更复杂的查询和文档修改功能。
39 1
|
8天前
|
JavaScript 前端开发 算法
[练习]用Js获取html页面中表单提交的数据并且返回到控制台
[练习]用Js获取html页面中表单提交的数据并且返回到控制台
8 0
|
12天前
|
JavaScript 前端开发 测试技术
Map 和 Object 在处理大量数据时性能差异
Map 和 Object 在处理大量数据时性能差异
|
1月前
|
缓存 Ubuntu Linux
error while loading shared libraries: libxcb-icccm.so.4: cannot open shared object file: No such file or directory 问题如何处理
【5月更文挑战第16天】error while loading shared libraries: libxcb-icccm.so.4: cannot open shared object file: No such file or directory 问题如何处理
138 0
|
1月前
|
数据采集 XML 数据挖掘
使用Python打造爬虫程序之HTML解析大揭秘:轻松提取网页数据
【4月更文挑战第19天】本文介绍了HTML解析在爬虫技术中的重要性,并通过Python的BeautifulSoup库展示了如何解析和提取数据。文章涵盖了HTML文档结构、使用BeautifulSoup的基本方法,如`find_all()`、选择器(标签、类、ID选择器)以及提取文本、属性和链接。此外,还讨论了遍历和处理嵌套元素的技巧。
|
1月前
一种pug与html相互转换的工具
一种pug与html相互转换的工具
17 0
|
1月前
|
前端开发 JavaScript UED
【专栏:HTML基础篇】HTML列表与表格:展示数据的两种方式
【4月更文挑战第30天】本文探讨了HTML中的列表和表格两种元素在网页设计中的重要性。无序列表(`&lt;ul&gt;`)和有序列表(`&lt;ol&gt;`)用于呈现相关项目,前者常用于导航菜单,后者适合有序信息。表格(`&lt;table&gt;`)用于展示结构化数据,通过`&lt;tr&gt;`、`&lt;td&gt;`和`&lt;th&gt;`定义行和单元格。尽管简单,列表和表格在内容呈现和用户体验上起着关键作用。然而,响应式设计趋势下,表格可能被更灵活的布局替代,复杂数据展示则可借助JavaScript库提升交互性。正确使用这些基础元素能有效组织信息,创建优质网页。
|
1月前
|
数据处理
关于 SAP Dynpro 程序里的 OK_CODE 和 SAVE_OK 这两个全局变量
关于 SAP Dynpro 程序里的 OK_CODE 和 SAVE_OK 这两个全局变量
关于 SAP Dynpro 程序里的 OK_CODE 和 SAVE_OK 这两个全局变量