说明:

Data URL给了我们一种很巧妙的将图片“嵌入”到HTML中的方法。跟传统的用img标记将服务器上的图片引用到页面中的方式不一样,在Data URL协议中,图片被转换成base64编码的字符串形式,并存储在URL中,冠以mime-type。认知服务的Rest API调用中图片只支持传入图片公网URL或本地图片的二进制流数组,并不支持直接上传DataURL。本文中,我将介绍如何巧妙的将Data URL转化为图片的二进制流数组,进而实现Rest请求调用。


核心转换(将base64转换成二进制数组)

function dataURItoBlob(base64Data) {
var byteString;
if (base64Data.split(',')[0].indexOf('base64') >= 0)
byteString = atob(base64Data.split(',')[1]);
else
byteString = unescape(base64Data.split(',')[1]);
var mimeString = base64Data.split(',')[0].split(':')[1].split(';')[0];
var ia = new Uint8Array(byteString.length);
for (var i = 0; i < byteString.length; i++) {
ia[i] = byteString.charCodeAt(i);
}
return new Blob([ia], {type:mimeString});
}

完整示例程序


本示例程序调用中国版认知服务的OCR功能。图片的URL直接使用DataURL,通过转码完成测试调用。


<html>
<head><title>OCR using Project Oxford in javascript</title><script src="https://yunewstoragetest.blob.core.chinacloudapi.cn/jslib/jquery-2.2.2.min.js"></script>
</head>                         <body><div><label for="filename">OCR Test</label><br /><button id="btn">Detect faces</button></div><div><p id="response"></p></div><div><canvas id="myCanvas" width="1000" height="800">Your browser does not support the HTML5 canvas tag.</canvas></div>
<script>//DataURL
var dataURL = "data:image/png;base64,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";$('#btn').click(function () {showImage(dataURL);OCR(dataURL);
});//base64 to [Binary image data]
function dataURItoBlob(base64Data) {
var byteString;
if (base64Data.split(',')[0].indexOf('base64') >= 0)
byteString = atob(base64Data.split(',')[1]);
else
byteString = unescape(base64Data.split(',')[1]);
var mimeString = base64Data.split(',')[0].split(':')[1].split(';')[0];
var ia = new Uint8Array(byteString.length);
for (var i = 0; i < byteString.length; i++) {
ia[i] = byteString.charCodeAt(i);
}
return new Blob([ia], {type:mimeString});
}$("#filename").change(function () {showImage(dataURL);
});function OCR(dataURL) {var apiKey = "<computer api key>";var blob = dataURItoBlob(dataURL); // dataurl to binary array// Call the API$.ajax({url: "https://api.cognitive.azure.cn/vision/v1.0/ocr?language=unk&detectOrientation=true",beforeSend: function (xhrObj) {xhrObj.setRequestHeader("Content-Type", "application/octet-stream");xhrObj.setRequestHeader("Ocp-Apim-Subscription-Key", apiKey);$("#response").text("Calling api...");},type: "POST",data: blob,processData: false,//contentType: false}).done(function (response) {// Process the API response.processResult(response);}).fail(function (error) {// Oops, an error :($("#response").text(error.getAllResponseHeaders());});
}function processResult(response) {var arrayLength = response.length;if (arrayLength > 0) {var canvas = document.getElementById('myCanvas');var context = canvas.getContext('2d');context.beginPath();// Draw face rectangles into canvas.for (var i = 0; i < arrayLength; i++) {var faceRectangle = response[i].faceRectangle;context.rect(faceRectangle.left, faceRectangle.top, faceRectangle.width, faceRectangle.height);}context.lineWidth = 3;context.strokeStyle = 'red';context.stroke();}// Show the raw response.var data = JSON.stringify(response);$("#response").text(data);
}function showImage(dataURL) {var canvas = document.getElementById("myCanvas");var context = canvas.getContext("2d");context.clearRect(0, 0, canvas.width, canvas.height);var input = document.getElementById("filename");var img = new Image;img.onload = function () {context.drawImage(img, 0, 0);}img.src = dataURL;
}</script>
</body>
</html>

测试结果:

更多参考链接:

DATA URL简介及DATA URL的利弊

JavaScript将base64图片转换成formData并通过AJAX提交的实现方法

图片在线编码BASE64


转载于:https://www.cnblogs.com/taro/p/8057988.html

认知服务调用如何使用图片的DataURL相关推荐

  1. 关于使用阿里云服务调用识别身份证图片、营业执照的信息抓取接口的简单实现

    1:识别身份证你可以选择用   阿里开放平台提供或者百度开放平台的识别 同理用哪个就要去注册个帐号.自行百度. 再此,使用的是阿里云的人脸识别. 传送门: https://market.aliyun. ...

  2. 微软认知服务开发实践(2) - 计算机视觉

    前言 计算机视觉所涉及的面很广泛,Computer Vision API中提供了几个常用的分析功能,可实现解读图片内容信息,对图片进行OCR识别,生成缩略图,未来也许会增加更多功能.本文将针对其分别是 ...

  3. 微软认知服务应用秘籍 – 漫画翻译篇

    概述 微软认知服务包括了影像.语音.语言.搜索.知识五大领域,通过对这些认知服务的独立或者组合使用,可以解决很多现实世界中的问题.作为AI小白,我们可以选择艰难地攀登崇山峻岭,也可以选择像牛顿一样站在 ...

  4. 【微软 Azure 认知服务】零基础搭建微软 Azure AI 认知服务实验分享

    Azure人工智能认知服务实验 Azure认知服务(语音合成产品系列)是微软云服务里面的明星产品,基于行业领先的Hifi-net语音模型打造,可以提供高质量神经网络版声音,发音更准确.韵律更自然.高保 ...

  5. 微软认知服务的使用 – 漫画翻译

    概述 微软认知服务包括了影像.语音.语言.搜索.知识五大领域,通过对这些认知服务的独立或者组合使用,可以解决很多现实世界中的问题.作为AI小白,我们可以选择艰难地攀登崇山峻岭,也可以选择像牛顿一样站在 ...

  6. 【0元试用微软 Azure人工智能认知服务】这个人脸识别功能太强大啦

    导读:这个由美丽的客服小姐姐提前申请好了企业试用的账号,个人的话还得需要visa卡. 官网地址:azure.cn 登录地址:portal.azure.cn 目录 1.简介 2.Azure 认知服务是什 ...

  7. 使用Azure认知服务快速搭建一个目标检测平台

    文章目录 前言 1. 认知服务 2. 环境配置 2.1 创建资源 2.2 创建python环境 3. 代码实现 3.1 图片检测 3.2 视频检测 4. 检测效果 结束语 前言   博主参与了由CSD ...

  8. java todataurl_用canvas的toDataURL()将图片转为dataURL(base64)

    假设一个应用场景:由于某些特殊原因从服务端请求到图片路径(图片被存储在服务器上),要求通过该路径获取对应图片的 base64 dataURL.在这个场景中,我们首先推断该图片路径是可访问的,同时还需要 ...

  9. java todataurl_利用canvas中toDataURL()将图片转为dataURL(base64)的方法详解

    将图片转为base64的好处 将图片转换为Base64编码,可以让你很方便地在没有上传文件的条件下将图片插入其它的网页.编辑器中. 这对于一些小的图片是极为方便的,因为你不需要再去寻找一个保存图片的地 ...

最新文章

  1. 杂七杂八的前端基础01——函数作用域
  2. android 共享代码,Android团队成员间的代码共享!(Git+Github版)
  3. 控件不支持html5,javascript – HTML5视频控件不起作用
  4. CVPR 2018 LSART:《Learning Spatial-Aware Regressions for Visual Tracking》论文笔记
  5. 【Python数据挖掘课程】七.PCA降维操作及subplot子图绘制
  6. 改变mysql的菜单栏的颜色_导航条——动态改变导航菜单的背景颜色
  7. 第1章第1节练习题10 查找中位数
  8. mysql table as_Mysql中create table as与like命令的区别
  9. MTK 驱动(47)---使用PWM配置背光如何配置,及频率计算
  10. 【Flink】Flink 流处理 Sum操作 Table is not an append-only table. Use the toRetractStream() in order to hand
  11. sql isnull函数_SQL ISNULL函数
  12. 通过Shell脚本快速搭建高效Rsync服务
  13. JavaScript的输出(2)
  14. Flutter学习 — 实现滑动关闭、删除item
  15. 数学建模之数据包络分析(评价投入产出比的模型)
  16. 2022年 27 个最佳 UX/UI 设计灵感网站
  17. html ckplayer.swf,Flash基础入门之ckplayer.js视频播放插件
  18. 一个老网络工程师给年轻工程师的十大忠告!
  19. so库方法的调用过程
  20. 漫画喵的100行Python代码逆袭

热门文章

  1. 无人机行业情况 - 亿航、大疆、极飞
  2. android 获取经纬度(百度地图)
  3. app爬虫之Android模拟器与fildder的搭建
  4. 某些厂商防火墙存在硬编码漏洞复现
  5. 算法偏见是什么_处理人工智能的偏见如何使算法公平公正
  6. 运营事故的处理及预防
  7. 3D模型欣赏:人形武器 古代兵器 【3D游戏建模教程】
  8. 移动的帝国:日本移动互联网兴衰启示录
  9. 计算机无法安装蓝牙驱动,电脑没有蓝牙驱动怎么安装具体方法
  10. IT硬件名人堂:40年经典产品和背后的故事(组图)