【javascript】关于 canvas.toDataURL()
在工作中遇到了奇怪的问题,在此记录。
一、定义
canvas.toDataURL()方法是返回一个包含图片展示的 数据URL。可以使用 type 参数其类型,默认为 PNG格式,图片的分辨率为96dpi。
二、语法
canvas.toDataURL(type,encoderOptions)
三、参数
1、type:图片格式,默认为 image/png,可以是其他image/jpeg等
2、encoderOptions:0到1之间的取值,主要用来选定图片的质量,默认值是0.92,超出范围也会选择默认值。
四、返回值
返回值是一个数据url,是base64组成的图片的源数据、可以直接赋值给图片的src属性。
需求:有张显示在网页上的图像,需要作为文件参数传给后端
方法:先通过canvas.toDataURL()转为base64,再使用 base64ConvertFile()转成文件
问题:在使用canvas.toDataURL()方法时,选择不同type,最终生成文件大小有很大区别。
实验:原图为大小为411kb的jpeg图像,type选择image/png,最终文件大小为6.3M,type选择image/jpeg,最终文件大小为6.3M,type选择image/jpeg,最终文件大小为667k,type选择image/webp,最终文件大小为381k。选择其他类型的图像格式会使用默认值image/png。
结论:使用png会使最终生成的文件大小扩大十倍,原图为jpeg格式,那么这边最好也使用jpeg格式,使用jpeg图像大小会变大6%左右,webp虽然会使得生成的文件大小缩小,但有兼容性问题。
【javascript】关于 canvas.toDataURL()的更多相关文章
- javascript的canvas绘图的基本用法
<canvas>是HTML里面非常强大的元素,利用它结合js可以实现很多动画效果,大大增强交互性.下面,我想用图文并茂的方式阐述一下canvas的绘图机制的基础内容,话不多说,先上代码: ...
- 用JavaScript将Canvas内容转化成图片的方法
上周我们花了半天时间开发下一个准备放进Mozilla Marketplace的应用.有一个应用现在非常的火热,那就是Instagram,Facebook花了100万美元收购了它.我们也想有100万美元 ...
- JavaScript修改Canvas图片
用JavaScript修改Canvas图片的分辨率(DPI) 应用场景: 仓库每次发货需要打印标签, Canvas根据从数据库读取的产品信息可以生成标签JPG, 但是这个JPG图片的默认分辨率(D ...
- JavaScript+html5 canvas实现本地截图教程
这篇文章主要介绍了JavaScript+html5 canvas实现本地截图教程,对截图功能感兴趣的小伙伴们可以参考一下 最近有时间了解了下html5的各API,发现新浪微博的头像设置是使用canva ...
- 用JavaScript修改Canvas图片的分辨率(DPI)
应用场景: 仓库每次发货需要打印标签, Canvas根据从数据库读取的产品信息可以生成标签JPG, 但是这个JPG图片的默认分辨率(DPI)是72 这个DPI太低, 导致打印出来的图片会很模糊. 修改 ...
- 浅谈JavaScript的Canvas(绘制图形)
HTML5中新增加的一个元素canvas,要使用canvas元素,浏览器必须支持html5.通过canvas标签来创建元素,并需要为canvas指定宽度和高度,也就是绘图区域的大小. <canv ...
- 使用 JavaScript 和 canvas 做精确的像素碰撞检测
原文地址:Pixel accurate collision detection with Javascript and Canvas 译者:nzbin 我正在开发一个需要再次使用碰撞检测的游戏.我通常 ...
- 使用javascript和canvas画月半弯
使用javascript和canvas画月半弯,月半弯好浪漫!浏览器须支持html5 查看效果:http://keleyi.com/a/bjad/8xqdm0r2.htm 以下是代码: <!do ...
- 快速解决Canvas.toDataURL 图片跨域的问题
出现Canvas.toDataURL 图片跨域问题怎么解决呢?下面小编就为大家带来一篇Canvas.toDataURL 图片跨域问题的快速解决方法.一起跟随小编过来看看吧 如题,在将页面的图片地址进行 ...
- JavaScript之canvas
num.push(x,y); 动画草图(举个栗子,我们把数字“2”给画出来): <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transit ...
随机推荐
- 像MIUI一样做Zabbix二次开发(4)——乐维监控定制Zabbix的方法
做监控源于我们早期做运维服务的必然需求,我们的愿望是基于Zabbix这个强大开源平台,结合实际一线运维工作的需要+ITIL等运维理论,做成类似MIUI一样的开发.易用.实用.人性和美观的全新的监控平台 ...
- C# snaps
C# 启用 禁用 本地连接 1 static void Enable(string interfaceName) 2 { 3 System.Diagnostics.ProcessStartInfo p ...
- Collections.synchronizedList使用方法
ArrayList众所周知ArrayList是非线程安全的,在多线程的情况下,向list插入数据的时候,可能会造成数据丢失的情况.并且一个线程在遍历List,另一个线程修改List,会报Concurr ...
- python sorted() 多重排序
前言: 最开始是因为看到一道题目, 用一行代码解决[1, 2, 3, 11, 2, 5, 3, 2, 5, 3] 输出[11, 1, 2, 3, 5] 本来想法很简单,先去重后排序 但是遇到一个难点 ...
- VS2010运行opencv的程序,出现“应用程序无法正常启动0xc000007b”的解决方法
问题描述 当我们在用vs2010对工程进行编译结束后,并且生成了可执行文件时,但是运用时却出现了"应用程序无法正常启动0xc000007b" 解决方法 这个通常是有一些动态链接库没 ...
- express的使用:接口的编写(三)
1.接口的跨域问题 a.CORS,主流 b.JSONP,只支持get请求 步骤:a.安装 npm install cors b.使用 const cors = require('cors') 导入中 ...
- MySQL8.0的下载、安装、配置
转1: MySQL8.0的下载.安装.配置 MySQL8安装教程(下载.安装.连接.卸载) Navicat Premium 15激活(含注册机)
- ssh通过sock5的问题kex_exchange_identification: Connection closed by remote host
工作需要,连接几台外网的服务器.由于移动的网络直连,经常会连不上,所以想通过本地的sock5代理连接. 神奇的事情发送了,通过sock5代理,有几台主机可以连上,有几天报上面的错误. 经过反复测试,外 ...
- mysql之存储引擎-第二篇
什么是存储引擎? 数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建,查询,更新和删除数据操作.不同的存储引擎提供了不同的存储机制,索引技巧及特定功能. 存储引擎类型 InnoDB ...
- 【Android HttpClient引入】感慨下自己看的Android教程有点老了
教程看到使用HttpClient,发现没有继承该类. 原因是API23即在Android 6.0(API 23) 后,Google已经移除了Apache HttpClient 相关类,推荐使用Http ...