前端vue实现图片压缩并且将其转换为jpg格式图片;前端转换图片格式;前端使用js转换图片格式;前端使用canvas将png格式图片转成jpg格式

需求中可能有时需要将png图片转成jpg图片或者格式互转,前端使用js和canvas转换图片的格式;

原理: 是使用FileReader来把文件读入内存,并且读取文件中的数据。 readAsDataURL方法可以在浏览器主线程中异步访问文件系统,读取文件中的数据,且读取后 result 为 DataURL, DataURL 可直接 赋值给 img.src;然后通过canvas.toDataURL(type)输出相应格式的图片;

方法一:原文链接以及参考链接

方法二:前端vue实现图片压缩并且将其转换为jpg格式图片

以下代码可直接复制:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><input type="file" id="inputimg"><select id="myselect"><option value="1">jpeg格式</option><option value="2">webp格式</option><option value="3">png格式</option></select><button id="start">开始转换</button><p>预览:</p><img id="imgShow" src="" alt="">
</body><script>/*事件*/document.getElementById('start').addEventListener('click', function () {getImg(function (image) {console.log(2);var can = imgToCanvas(image)imgshow = document.getElementById("imgShow");imgshow.setAttribute('src', canvasToImg(can));});});// 把image 转换为 canvas对象function imgToCanvas(image) {console.log(3);var canvas = document.createElement("canvas");canvas.width = image.width;canvas.height = image.height;canvas.getContext("2d").drawImage(image, 0, 0);return canvas;}//canvas转换为imagefunction canvasToImg(canvas) {console.log(4);var array = ["image/jpeg", "image/webp", "image/png"]type = document.getElementById('myselect').value - 1;console.log(canvas);var src = canvas.toDataURL(array[type]);// console.log(src);return src;}//获取图片信息function getImg(fn) {var imgFile = new FileReader();console.log(1, imgFile);try {// 使用FileReader来把文件读入内存,并且读取文件中的数据。 readAsDataURL方法可以在浏览器主线程中异步访问文件系统,读取文件中的数据,且读取后 result 为 DataURL, DataURL 可直接 赋值给 img.srcimgFile.readAsDataURL(document.getElementById('inputimg').files[0]);console.log(imgFile);imgFile.onload = function (e) {console.log(e);var image = new Image();image.src = e.target.result; //base64数据image.onload = function () {fn(image);}}} catch (e) {console.log("请上传图片!" + e);}}
</script></html>

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

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

相关文章

mysql中创建表时提示 no database selected

用习惯了oracle或者sqlserver的界面形式 当用到mysql时创建表时往往就会忘记添加表空间这个前提。在一个用户下面可建多个表空间使用语句 create database your_database_name;下面讲一下在建表时有两种方法&#xff1a;1、在命令窗口中用命令 use database_name;该命令将会转…

系统中已安装了vmware,请先卸载干净并重启电脑

打开VMware目录&#xff0c;有个卸载的.cmd 以管理员身份运行&#xff0c;成功之后注销一下电脑。进入系统把VM目录删除&#xff0c;重新解压缩或者安装&#xff0c;再以管理员身份运行安装的.cmd&#xff0c;就可以了。

前端读取文件图片信息流;js读取图片不同信息流;js读取图片;前端就js读取二进制数据;前端js读取文件流使用FileReader对象的readAsDataURL方法来读取图像文件;

原文链接 FileReader来把文件读入内存&#xff0c;并且读取文件中的数据。 readAsDataURL方法可以在浏览器主线程中异步访问文件系统&#xff0c;读取文件中的数据&#xff0c;且读取后 result 为 DataURL, DataURL 可直接 赋值给 img.src。 FileReader 的 result 可以有 3 种形…

【转】LAMP网站架构方案分析【精辟】

【转】LAMP网站架构方案分析【精辟】 http://www.cnblogs.com/mo-beifeng/archive/2011/09/13/2175197.htmlXubuntu下LAMP环境安装(最佳的PHP环境搭建) http://www.cnblogs.com/mo-beifeng/archive/2011/08/13/2137605.html 转载于:https://www.cnblogs.com/bravehunter/p/5709…

有源晶振和无源晶振的区别

1、晶振在电路中就相当于人的一个心脏&#xff0c;晶振为电路提供了一个时钟信号。有源晶振比较贵&#xff0c;但是有源晶振自身就能震动。而无论是无源晶振&#xff0c;还是有源晶振&#xff0c;都有自身的优点和缺点所在&#xff0c;若考虑产品成本&#xff0c;建议可以选择无…

免费设计图标的网站;免费设计的网站;免费设计的网站;

链接1&#xff1a;canva设计logo和图标 链接2&#xff1a;包图网 可以自行设计、编辑、下载logo图标海报等

介绍Linux中cp直接覆盖不提示的方法

From: http://www.php100.com/html/webkaifa/Linux/2011/0220/7570.html 新做了服务器&#xff0c;cp覆盖时&#xff0c;无论加什么参数-f之类的还是提示是否覆盖&#xff0c;这在大量cp覆盖操作的时候是不能忍受的。把a目录下的文件复制到b目录以下是代码片段&#xff1a;cp …

路由的Modem信号控制

中低端路由器上使用disp interface 查看相应串口状态信息&#xff0c;其中DCD、DTR、DSR、RTS及CTS等五个状态指示分别代表什么意思&#xff1f; DCD&#xff08;Data Carrier Detect 数据载波检测&#xff09; DTR&#xff08;Data Terminal Ready 数据终端准备好&#xff09;…

项目回顾1-图片上传-form表单还是base64-前端图片压缩

第一个项目终于上线了&#xff0c;是一个叫亲青筹的公益众筹平台&#xff0c;微信端&#xff0c;电脑端还有后台界面大部分都是我完成的&#xff0c;几个月过来&#xff0c;感觉收获了很多&#xff0c;觉得要总结一下。 首先想到的是图片上传的问题。在通常表单数据都是ajax上传…

4.6 【共享源】流的生产者(一)

一,什么是生产者? 生产者创建内容并与有权限的消费者共享。 作为生产者,必须相应地设置流以供消费。通常,我们需要在生产者应用程序中执行接下来的流程来共享产生的内容。 二,创建生产者的流 调用 screen_create_stream() 为生产者创建流以进行渲染。例如 ... screen…

vue路由传参两种方式;vue路由传参query与params区别;vue路由跳转的带参与不带参,路由跳转传参方式:name 、 path;

vue项目的路由传参常用的有两种方式&#xff1a;query和params 1.query传参特点&#xff1a;1.1可以用path也可以用name传递路径 注意name是路由页面vue文件的名称 不需要/1.2跳转页面地址栏可以看到路径和参数 通过 this.$route.query.id 可以获取到参数1.3刷新不会丢失参数t…

Qt下Undefined reference to 'vtable for xxx'

QT下遇到这种错误提示时候需要注意以下情况&#xff1a; 一、cpp文件里使用了Q_OBJECT 分析&#xff1a;qmake不会处理.cpp文件里的Q_OBJECT&#xff0c;所以如果在.cpp文件中有它的话将会产生undefined reference to vtable for "xxx::xxx"。 方法1&#xff1a;…

Realtek网卡如何识别具体型号是8111B/8111C/8111D还是8111E???

From: http://support.icafe8.com/technologynews/focus/1347.html 貌似在去年&#xff0c;Realtek网卡把型号都统一为Realtek GBE什么什么的这种名字&#xff0c;这个修改说实话&#xff0c;对有盘没啥影响&#xff0c;只要驱动装好&#xff0c;能上网就ok了&#xff0c;但是…

【leetcode77】Single Number

一题目描述&#xff1a; 给定一个数组&#xff0c;只有一个数字出现一次&#xff0c;其余都是两次&#xff0c;判断那个数字 思路&#xff1a; 不断取出数据进行异或&#xff0c;最后一个数字&#xff0c;因为相同的数字会抵消代码&#xff1a; public class Solution {public …

qDebug格式化输出类型

%a,%A——读入一个浮点值(仅C99有效)    %c——读入一个字符    %d——读入十进制整数    %i——读入十进制&#xff0c;八进制&#xff0c;十六进制整数    %o——读入八进制整数    %x,%X——读入十六进制整数    %s——读入一个字符串&#xff0c;遇空格、制…

linux服务器上jfreeChar乱码问题

更新服务器字体和jdk字库utf-8。

css的px、rpx、em、rem、vw、vh、vmin、vman的区别

px:绝对单位 1px在哪里长度都是一样 rpx&#xff1a;相对单位 微信小程序引入rpx单位 在屏幕像素基准为375物理像素的屏幕上 1rpx 1px 例如iph6是屏幕宽度是375px 750物理像素 那么在上1rpx 375/750px0.5px em&#xff1a;相对单位 基准点是父节点字体font-size大小 rem&…

mac系统如何显示和隐藏文件

From: http://www.cnblogs.com/lm3515/archive/2010/12/08/1900271.html 苹果Mac OS X操作系统下&#xff0c;隐藏文件是否显示有很多种设置方法&#xff0c;最简单的要算在Mac终端输入命令。显示/隐藏Mac隐藏文件命令如下(注意其中的空格并且区分大小写)&#xff1a;显示Mac隐…

数制转换

进制的转换可以借助强大的BigInteger&#xff0c;非常的方便。 new java.math.BigInteger(num, from).toString(to); 表示num要转换的数从from源数的进制 转换成to的进制。 题目描述 求任意两个不同进制非负整数的转换&#xff08;2进制&#xff5e;16进制&#xff09;&#xf…

QString与char *之间的转换

1. 在 Qt 下将 QString 转 char* 需要用到 QByteArray 类&#xff0c;QByteArray 类的说明详见Qt帮助文档。因为 char* 最后都有一个‘/0’作为结束符&#xff0c;而采用 QString::toLatin1() 时会在字符串后面加上‘/0’。Exp : Qstring str "helloworld"; char …