图片转换js (img对象,file对象,base64,canvas对象),以及图片压缩方式

2023-11-07

首先想一想我们有哪些需求?大多时候我们需要将一个File对象压缩之后再变为File对象传入到远程图片服务器;有时候我们也需要将一个base64字符串压缩之后再变为base64字符串传入到远程数据库;有时候后它还有可能是一块canvas画布,或者是一个Image对象,或者直接就是一个图片的url地址,我们需要将它们压缩上传到远程;

二、解决办法

如上图所示,七个方法,基本覆盖了JS中大部分文件类型的转换与压缩,其中:

1、 urltoImage(url,fn) 会通过一个url加载所需要的图片对象,其中 url 参数传入图片的 url , fn 为回调方法,包含一个Image对象的参数,代码如下:

?
function urltoImage (url,fn){
  var img = new Image();
  img.src = url;
  img.onload = function(){
    fn(img);
  }
};

2、 imagetoCanvas(image) 会将一个 Image 对象转变为一个 Canvas 类型对象,其中 image 参数传入一个Image对象,代码如下:

function imagetoCanvas(image){
  var cvs = document.createElement("canvas");
  var ctx = cvs.getContext('2d');
  cvs.width = image.width;
  cvs.height = image.height;
  ctx.drawImage(image, 0, 0, cvs.width, cvs.height);
  return cvs ;
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

图片转换js (img对象,file对象,base64,canvas对象),以及图片压缩方式 的相关文章

  • C#:EXCEL退出会,进程/线程残留问题

    应该是微软的一个BUG吧 操作完EXCEL并退出后 仍然会有一个EXCEL的进程留存 解决方法 用API 将进程杀掉 using System Runtime InteropServices DllImport User32 dll Cha
  • C/C++中生成随机序列——随机函数的选择和自我实现

    一 缘由 最近需要将windows下的项目移植到linux下 但因为项目使用到随机函数 导致最后两边的结果有些微差异 因此需要将两边随机函数统一来保证运行结果每一步能对应上 大家常用的随机函数有srand rand 二 srand rand
  • Unity+Vuforia 开发遇到的问题

    Q1 利用外接摄像头时 不能打开摄像头 摄像头黑屏 A 选择ARCamera 打开设置面板 选择自己的摄像头
  • Echarts 让饼图中间文字居中并自适应图表

    背景 产品提出需求在饼图中间放两行文字且居中 简单 劈劈啪啪写完了 产品再提出你这个没有自适应啊 屏幕放大 缩小你这个就没有居中了 甚至会和饼图重叠 emmmmm UI图如下 方案一 使用tittle 不能自适应 方案二 在series中配
  • flutter实现appbar下选项卡切换

    这篇文章主要为大家详细介绍了flutter实现appbar下选项卡切换 文中示例代码介绍的非常详细 具有一定的参考价值 感兴趣的小伙伴们可以参考一下 本文实例为大家分享了flutter实现appbar下选项卡切换的具体www qmia cn
  • 【设计】】MOS管衬底电位接法

    参考 请问什么是nwell和P substrate 请问什么是nwell和P substrate 请问什么是nwell和P substrate 在CMOS的IC设计 如NPN三极管中经常看到请问什么是nwell和P substrate的说法
  • 【GitLab】在IDEA中回滚主分支

    这是工作中遇到的问题 记录下来 也方便自己后面查看操作步骤 也方便各位遇到这个问题 不至于卡太久 首先切换到主分支 这里以图中ejob项目为例 切换到主分支后 打开ejob项目的git历史记录 例如图中 从当前位置准备回滚到指定位置 右键选
  • Flutter中GetX系列九--路由/页面跳转,传值,中间件(GetPage)

    1 页面传值跳转和中间件 GetPage 使用代码 import package flutter material dart import package flutterlianxi login VC dart import package
  • ubuntu16.04 mysqlserver常见连接问题

    记录安装过程中的mysql连接问题 1 个别试图表无权限查看 CREATE USER username IDENTIFIED BY password GRANT ALL ON TO username FLUSH PRIVILEGES 或者n
  • 深度学习之Python常用第三方模块篇

    除了内建的模块外 Python还有大量的第三方模块 基本上 所有的第三方模块都会在PyPI the Python Package Index上注册 只要找到对应的模块名字 即可用pip安装 强烈推荐安装Anaconda 安装后 数十个常用的
  • ubuntu20.04设置防火墙

    Linux原始的防火墙工具iptables由于过于繁琐 所以ubuntu系统默认提供了一个基于iptable之上的防火墙工具ufw 而UFW支持图形界面操作 可以通过ufw命令操作防火墙 1 防火墙状态 active 开启状态 inacti

随机推荐

  • STM32 基础系列教程 21 - NVIC

    前言 学习stm32 NVIC接口编程 学会使用常用的NVIC接口函数 优改中关优先级 开 关单个中断 开 关所有中断 开 关所有中断和异常 系统软件重启等功能 示例详解 基于硬件平台 STM32F10C8T6最小系统板 MCU 的型号是
  • 搭建redis未授权环境,利用该漏洞getshell

    搭设环境两台主机 win10专业版 redis下载路径 https github com microsoftarchive redis releases kali作为靶机 redis下载路径 wget http dowload redis
  • 车牌输入框 封装 (小程序 vue)

    车牌输入框 封装 小程序 licenseNumber js licenseNumber json licenseNumber wxml licenseNumber wxss 页面调用 wxml js json wxss 样例 vue vnp
  • js延迟加载的方式有哪些

    设置
  • python菜鸟基础笔记(2)

    1 range 函数 前闭后开 遍历数字序列 可以使用内置range函数 生成数列 range 101 可以用来产生0到100范围的整数 需要注意的是取不到101 range 1 101 可以用来产生1到100范围的整数 相当于前面是闭区间
  • 00后太卷了,公司新来的一位卷王,表示我们这帮老油条真干不过.....

    都说00后躺平了 但是有一说一 该卷的还是卷 这不 前段时间我们公司来了个00后 工作没两年 跳槽到我们公司起薪18K 都快接近我了 后来才知道人家是个卷王 从早干到晚就差搬张床到工位睡觉了 最近和他聊了一次天 原来这位小老弟家里条件不太好
  • Linux 环境基础开发工具的使用

    目录 一 软件包管理器 yum 1 什么是软件包 2 查看软件包 3 如何安装软件 4 如何卸载软件 二 Linux开发工具 1 Linux编辑器 vim使用 1 1 vim的基本概念 1 2 vim的基本操作 1 3 vim正常模式命令集
  • springboot项目部署宝塔提示成功,实际没有启动

    被这个问题搞得头大了 默认项目用户为www 把项目用户改成root即可启动成功 启动成功后 再刷新还是显示成功运行
  • web测试的基本测试点

    一 什么是Web测试 如果要了解web测试 首先我们的清楚web项目是什么 一般指本b s架构项目也就是通过浏览器进行访问的 在日常生活工作中 基于web系统的应用非常多 打开电脑 抢火车票我们会登陆12306网站 添置衣物我们会登陆天猫
  • Codeforces 996 A Hit the Lottery

    A Hit the Lottery time limit per test 1 second memory limit per test 256 megabytes input standard input output standard
  • 副业搞钱的几个野路子:两个年入10万的零成本赚钱项目

    不想担太多风险 想低成本歪主意 最佳的选择不外乎就是做服务和卖交互式产品 搞交互式项目 最大的成本是时间成本 很多人都不缺时间 缺的是歪主意思维和变通能力 独豆豆不如众豆豆 这几天辨认出了三个歪主意的野路子 写个文章给大家互动互动 这三个主
  • Fisco Bcos区块链二(搭建使用控制台,体验Holleworld合约调用)

    文章目录 区块链开荒 技术文档 https fisco bcos documentation readthedocs io zh CN latest index html 2 配置及使用控制台 1 准备依赖 2 启动并使用控制台 3 部署及
  • 100天精通Python(可视化篇)——第97天:Pyecharts绘制多种炫酷热力图参数说明+代码实战

    文章目录 专栏导读 1 热力图介绍 2 基础热力图 3 添加色块数值 4 添加热力标尺 5 修改色块颜色 6 不同区间颜色 7 炫酷模块1 8 炫酷模块2 书籍推荐 专栏导读 本文已收录于 100天精通Python从入门到就业 本专栏专门针
  • 【构建ML驱动的应用程序】第 8 章 :部署模型时的注意事项

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • 最大堆和最小堆

    堆和栈的区别 一 堆栈空间分配区别 1 栈 操作系统 由操作系统自动分配释放 存放函数的参数值 局部变量的值等 其操作方式类似于数据结构中的栈 2 堆 操作系统 一般由程序员分配释放 若程序员不释放 程序结束时可能由OS回收 分配方式倒是类
  • 【从零开始】力扣刷题(2)

    前言 我根据这里的表单开始刷力扣 数组的改变移动 453 最小操作次数使元素相等 写了一个但超过时间限制 碰到 1 100000000 就超出时间限制了 就不错误示范了 看了一个评论 拍案叫绝 665 非递减数列 想了一天 看了很多解答 好
  • 【数据结构2】算法的基本概念

    算法的基本概念 程序 数据结构 算法 数据结构 如何把现实世界的问题信息化 将信息存进计算机 同时还要实现对数据结构的基本操作 算法 如何处理这些信息 以解决实际问题 算法的特性 有穷性 一个算法必须总在执行有穷步之后结束 且每一步都可在有
  • Windows 快速配置ip地址

    说明 生活中 很多时候我们要背着电脑往返于某些固定的地方 家里 公司 实验室 寝室等等 每次开电脑后第一件事情就是用图形界面点点点点再点改IP地址 这样非常的麻烦 如何快速配置为自己量身定做的IP地址呢 当然是用脚本 bat 脚本 将下面脚
  • Stata数据处理

    作者 Economicoder 公众号 数据学徒 1 快捷键 Fn F2 描述数据 describe Fn PgUp 搜索先前命令 Ctrl 8 打开 data editor browse Ctrl 9 新建do文档 Ctrl D 执行在d
  • 图片转换js (img对象,file对象,base64,canvas对象),以及图片压缩方式

    首先想一想我们有哪些需求 大多时候我们需要将一个File对象压缩之后再变为File对象传入到远程图片服务器 有时候我们也需要将一个base64字符串压缩之后再变为base64字符串传入到远程数据库 有时候后它还有可能是一块canvas画布