如何从 jpeg 或 png 格式的字节数组在画布上绘制图像

2023-11-22

就像标题所说,我有一个表示图像内容的字节数组(可以是 jpeg 或 png)。

我想将其绘制在常规画布对象上

<canvas id='thecanvas'></canvas>

我怎样才能做到这一点?


UPDATE我尝试过这个(不成功): (imgData 是一个 png,通过 WebSockify 作为字节数组“按原样”发送到客户端)

function draw(imgData) {
    "use strict";

    var canvas = document.getElementById("myCanvas");
    var ctx = canvas.getContext("2d");
    var rdr = new FileReader();
    var imgBlob = new Blob([imgData], {type: "image/png"});
    rdr.readAsBinaryString(imgBlob);

    rdr.onload = function (data) {
        console.log("Filereader success");
        var img = new Image();
        img.onload = function () {
            console.log("Image Onload");
            ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
        };
        img.onerror = function (stuff) {
            console.log("Img Onerror:", stuff);
        };
        img.src = "data:image/png;base64," + window.btoa(rdr.result);
    };

}

我总能达到img.onerror()

Also在我的文件系统上使用十六进制编辑器读取文件后,我可以看到字节数组与原始文件相同。


这有效:

function draw2(imgData, coords) {
    "use strict";
    var canvas = document.getElementById("myCanvas");
    var ctx = canvas.getContext("2d");

    //var uInt8Array = new Uint8Array(imgData);
    var uInt8Array = imgData;
    var i = uInt8Array.length;
    var binaryString = [i];
    while (i--) {
        binaryString[i] = String.fromCharCode(uInt8Array[i]);
    }
    var data = binaryString.join('');

    var base64 = window.btoa(data);

    var img = new Image();
    img.src = "data:image/png;base64," + base64;
    img.onload = function () {
        console.log("Image Onload");
        ctx.drawImage(img, coords[0], coords[1], canvas.width, canvas.height);
    };
    img.onerror = function (stuff) {
        console.log("Img Onerror:", stuff);
    };

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 jpeg 或 png 格式的字节数组在画布上绘制图像 的相关文章

  • 使用 jQuery inputmask 插件范围 0-100

    如何创建 0 到 100 范围内的掩码 document ready function masked inputmask 您可以使用jquery inputmask regex extensions js为了那个原因 你可以找到带有所有扩展
  • 我可以在 GWT 中使用第三方 Javascript 库吗

    例如穆工具 用 js 编码对我来说很舒服 但显然不适合所有人 你当然可以 最好的事情就是给自己写一些好看的JavaScript 覆盖类型 http code google com webtoolkit doc latest DevGuide
  • EmberJS:对象作为查询参数来刷新模型

    我遵循了查询参数指南 http guides emberjs com v1 11 0 routing query params http guides emberjs com v1 11 0 routing query params 而且效
  • 正则表达式中连字符的这种用法有效吗?

    NB I only想知道它是否是正则表达式定义中未转义连字符的有效应用 它是not关于匹配电子邮件 连字符或反斜杠的含义 量词或其他任何内容的问题 另外 请注意 链接的答案并没有真正讨论转义 未转义连字符之间的有效性问题 通常我会像这样声明
  • 二维数组作为字典的项目

    我想用一个项目的几个属性填充字典 例子 我正在考虑拥有Item 1 and Item 2 as Dictionary键与array这将保留其属性 我需要能够单独访问项目的每个属性 因此将它们连接为一个字符串不是一种选择 我正在考虑类似下面的
  • java中如何重新初始化int数组

    class PassingRefByVal static void Change int pArray pArray 0 888 This change affects the original element pArray new int
  • PHP 使用主键和辅助键对多维数组进行排序[重复]

    这个问题在这里已经有答案了 如何按主键和辅助键对多维数组进行排序 例如 假设有以下数组 result array result 0 prio 1 result 0 date 2010 02 28 result 0 post February
  • Angular 4 Http POST 不起作用

    我希望每个人都做得很好 我最近开始使用 Angular 4 4 我一直在尝试将数据发布到我的 api 服务器 但不幸的是它不起作用 我花了大约两天的时间 但仍然没有成功 甚至已经尝试过 6 7 篇文章角 io https angular i
  • 播放没有音频标签的音频

    是否可以在没有音频标签的情况下仅使用 javascript 播放音频 我通过 tinyMce 编辑器注入脚本 因为我无权访问网站的后端 并且它不支持客户端的音频标签 她只想要当您将鼠标悬停在图像上时发出简单的声音 我已经完成了所有设置 但是
  • 如何知道 .keyup() 是否是字符键(jQuery)

    如何知道 keyup 是否是字符键 jQuery input keyup function if key is a character such as a b A b c 5 3 2 etc not enter key or shift o
  • 从链接打开本地文件夹

    如何通过单击任何链接打开本地文件夹视图 我尝试了很多选择 例如 a href Open folder a or a Open folder a or a Open folder a 解决方案 启动可下载链接 以下内容适用于所有浏览器 但一如
  • 如何从 html 页面 [javascript] 调用 Web 服务方法而不刷新页面

    我有一个webservice这将返回一个值 我的要求是 我需要调用它webservice从一个index html页面 该页面有一个 html 提交按钮 在该按钮上单击我正在呼叫JavaScript 从那里我想调用网络方法 我怎样才能做到这
  • node.js 模块/导出系统:是否可以将模块导出为函数

    我想在 Dispatch js 中做这样的事情 function handle msg exports handle 这在调用index js中 var dispatch require Dispatch dispatch data 有任何
  • Svelte 条件元素类报告为语法错误

    我正在做一个if块每if 块的精简指南 https svelte technology guide if blocks 这看起来很简单 但 Svelte 认为这是一个语法错误 svelte plugin ParseError Unexpec
  • 为什么 call 比 apply 快那么多?

    我想知道是否有人知道why call比apply 在 Chrome 中 速度大约快 4 倍 在 Firefox 中快 30 倍 我什至可以制作自定义原型 apply2 在大多数情况下 运行速度是apply 这个想法取自角度 Function
  • 轮播滑动(未滑动)事件上的火灾事件,Bootstrap 3

    Bootstrap 2 似乎可以很好地处理幻灯片事件 请参阅这个问题 https stackoverflow com questions 9651466 how to attach slide slid events to the boot
  • javascript - 如何获取对象名称或关联数组索引名称?

    我有一个像这样的 JSON 对象 var list name1 element1 value1 name2 element1 value2 如何提取所有 nameX 字符串值 例如 假设我想将它们连接在一个字符串中输出 例如 name1 n
  • vuejs中如何获取组件编译后的html内容

    我有一个这样的组件
  • jQuery Mobile + Admob:轮换?

    我使用 jQuery Mobile 框架创建了一个移动应用程序 所有页面都在index php中加载 使用 div 在每个页面的页脚中 我添加了Admob代码 div div div
  • 将引导程序弹出框保留在视口内

    我正在尝试使用带有按钮的侧边栏创建一个菜单 每个按钮都有一个指定的包含相关数据的弹出窗口 不幸的是 其中一个弹出窗口可能包含任意数量的行 并且在某些情况下它可能部分位于视口之外 See http jsfiddle net bfd9f 1 h

随机推荐

  • 后台任务中的 IOC DI 多线程生命周期范围

    我有一个使用 IOC 和 DI 来创建和注入服务的应用程序 我有一个处理一些业务逻辑的服务层 在服务层中我有一个与数据库通信的存储库 该存储库使用的 DataContext 不是线程安全的 我想使用后台任务在服务上异步运行一些功能 但知道这
  • AutoMapper 自定义类型转换器不工作

    我在用特洛伊 古德的分页列表在我的 WebApi 中提供分页信息 他的包返回一个 IPgedList 它实现 IEnumerable 但也包含自定义属性 例如 IsLastPage PageNumber PageCount 等 当您尝试从
  • 寻找重复出现的模式

    假设我有一个具有重复模式的数字 即存在一串重复的数字 以便形成有问题的数字 例如 这样的数字可能是1234123412341234 通过重复数字创建1234 我想做的是找到重复自身的模式来创建数字 因此 给定1234123412341234
  • 从 C# 运行 PowerShell 脚本

    我正在尝试使用 Visual Studio 构建图形平台 我不是开发人员 我想在单击按钮时运行 PowerShell 或批处理文件 问题是 当我尝试 C 语法时 即使我安装了 PowerShell 扩展 它也不起作用 我尝试了一些在互联网上
  • 调试Linux内核恐慌

    我是内核调试的新手 下面是最后一条内核消息 根据我的理解 它正在尝试访问空指针 但我不明白为什么它要关闭 cup 0 Unable to handle kernel paging request at virtual address 400
  • 如何使 NSView 透明并显示 NSWindow 下的内容? [复制]

    这个问题在这里已经有答案了 我正在 osx 中制作一个放大镜风格的应用程序来娱乐 但我遇到了一个我似乎找不到答案的障碍 我在 NSWindow 中有一个 NSView 我将视图设置为clearColor 将 alpha 设置为 0 25 但
  • 如何覆盖 4mb API 路由正文大小限制?

    我尝试了多种方法来覆盖 API 路由主体大小限制 https nextjs org docs messages api routes body size limit 设置自定义服务器 基本 Express 应用程序 在相关路由上传递 bod
  • 在R中按时间范围合并两个数据帧

    我正在处理牛的繁殖力数据 在一个表 数据框 中 我记录了一头牛所执行的所有服务 例如授精 在另一个表中 我得到了妊娠诊断 阳性或阴性 两者都有一个唯一的 ID animal id 我的挑战是成功地将两个表合并到正确的数据范围内 这意味着我需
  • 有没有办法使用内存分配报告来分析 ruby​​ 1.9.2 脚本?

    我的 ruby 应用程序遇到了瓶颈 但我不知道它在哪里变慢 我找到了memprof 但它不支持1 9 我还发现 ruby prof 似乎在 1 9 2 上运行良好 但内存分配需要修补 ruby 解释器 并且我只能找到 ruby 1 8 的补
  • Spring多事务管理器、单事务

    我有一个复杂的情况 我必须使用 2 个不同的数据库 因此我使用 2 个不同的事务管理器 Spring中有没有办法将这些事务管理器链接到单个事务中工作 如果第二个数据源出现异常 第一个数据源的更改应该回滚
  • vue代理设置不起作用

    我有一个 Vue 项目 vue cli 3 x 我定义的代理package json基于本文不管用 目标服务器看不到 API 请求 我在这里缺少什么 vue 文件
  • xslt 仅在一个节点中将 \n 替换为

    嘿 我有一个节点 其中包含一条消息 例如 string1字符串2刺3 但是 当它渲染时 它会渲染所有一行 我如何将所有 n 替换为 s 我试过了 但我收到这个错误 加载样式表时出错 XSLT XPath 函数无效 我该怎么做呢 在您要处理的
  • Android使用buildozer编译错误

    我正在尝试编译一个 apk this one 使用构建器 但我不断收到下面的命令失败消息 我尝试过使用不同的 python 路径 重新安装 buildozer 使用不同的 buildozer 路径 从 Mac HD 编译 使用 sudo 编
  • Eigen - 将常量数组映射到动态向量

    我需要定义一个函数 它需要constC 数组并将其映射到Eigen地图 以下代码给我一个错误 double data 10 0 0 typedef Eigen Map
  • 在 WebView Google Tv 应用上处理方向键上的箭头键

    我已经构建了一个 Android 应用程序 它在 WebView 中加载 html 页面 并且工作正常 除了应该在方向键上发生的操作不起作用这一事实 如果我用其他键更改箭头的操作 它就会起作用 在 Web 浏览器中加载 html 页面工作正
  • 如何将 HTML 输入值数据类型更改为整数?

    我正在使用 jQuery 检索输入按钮提交的值 该值应该是一个整数 我想将其增加一并显示它 Getting immediate Voting Count down button id var countUp this closest li
  • Android 浏览器 - 当锚点聚焦时删除轮廓边框

    我在我的 Android 应用程序上使用一个加载外部页面的 webview 它有一些锚点 a 标签 当我按下它时 会出现黄色边框 我怎样才能防止它并删除这个边框 我尝试过以下技巧 jQuery a focus function this a
  • 在 Laravel 中创建可链接的方法

    我一直在尝试在 laravel eloquent 中创建自己的可链接方法 但我错过了一些东西 并且不确定什么 这听起来可能有点疯狂 但请看一下我下面的函数 以便更好地了解我想说的内容 class Post extends Eloquent
  • 寻找对我的线程安全、无锁队列实现的批评

    因此 经过一番研究后 我写了一个队列 它使用固定大小的缓冲区 因此它是一个循环队列 它必须是线程安全的 我已经尝试使其成为无锁的 我想知道它出了什么问题 因为这些事情我自己很难预测 这是标题 template
  • 如何从 jpeg 或 png 格式的字节数组在画布上绘制图像

    就像标题所说 我有一个表示图像内容的字节数组 可以是 jpeg 或 png 我想将其绘制在常规画布对象上