博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
前端开发,关于图片的那些事
阅读量:5921 次
发布时间:2019-06-19

本文共 1354 字,大约阅读时间需要 4 分钟。

一直在想,应该要用什么方式去写前端开发中图片的故事,按照图片类型枚举太散乱,还是从编码开始说起吧。

数据格式

图片数据格式由图片头部和图片内容组成,图片头部则是描述图片信息的数据,比如图片的大小、格式之类的。所以图片是不用等到全部都加载完才能知道宽度和高度的。

另外对于数码相机拍摄的照片,会有exif信息,包括拍摄设备型号、照片方向、图象拍摄时间等。那么获取照片方向什么的,可以使用exif-js,详情可以参照

名称 说明
EXIF.getData(img, callback) 获取图像的数据,能兼容尚未支持提供 EXIF 数据的浏览器获取到元数据。
EXIF.getTag(img, tag) 获取图像的某个数据
EXIF.getAllTags(img) 获取图像的全部数据,值以对象的方式返回
EXIF.pretty(img) 获取图像的全部数据,值以字符串的方式返回

图片格式

名称 说明
gif 无损压缩格式,压缩率一般在50%左右,如果把存于一个文件中的多幅图像数据逐幅读出并显示到屏幕上,就可构成一种最简单的动画。支持透明背景图像。GIF是一种比较好用的动画格式,但是会有白色锯齿,可以选择在Photoshop上更改杂边背景色与H5图层背景色融合在一起淡化这种不良反应。再推荐一个Flash、视频等格式转化为GIF动画的
jpeg / jpg JPEG,全称为“Joint Photographic Experts Group”,是一种针对图像的压缩而制定的标准,体积相对较小,打开速度较快,但是图片相对没有那么清晰。使用JPEG标准压缩的图片文件,被称为“JPEG文件”,这种文件的扩展名通常是JPG、JPEG、JPE、JFIF以及JIF,在这些文件格式中,以JPG的使用最为广泛。JPEG在压缩图像时所进行的色彩空间转换,指的就是将RGB转换为YCbCr。压缩相关,可以参照
png 便携式网络图形是一种无损压缩的位图片形格式,格式有8位、24位、32位三种形式,其中8位PNG支持两种不同的透明形式(索引透明和alpha透明),24位PNG不支持透明,32位PNG在24位基础上增加了8位透明通道,因此可展现256级透明程度。PNG规范中不包含嵌入式EXIF(可交换图像文件格式)图像数据的标准
apng 是一个基于PNG(Portable Network Graphics)的位图动画格式,不识别APNG格式的PNG解码器至少能够正常回放第一幅普通PNG画面。支持ios 8,不支持安卓
webp 谷歌(google)开发的一种旨在加快图片加载速度的图片格式。图片压缩体积大约只有JPEG的2/3,并能节省大量的服务器宽带资源和数据空间。WebP既支持有损压缩也支持无损压缩。相较编码JPEG文件,编码同样质量的WebP文件需要占用更多的计算资源。Android 4.0+,IOS不支持

图片的渲染

图片的渲染有两种方式,一个是自上而下的渲染,一个是渐进式渲染,区别在于保存时在photoshop勾选的连续选项。

若是连续则是渐进式渲染,一种类似于淡入的效果,否则是自上而下的渲染,有一种图片撑开页面的过程。

获取图片数据

  • canvas 获取

    cxt.getImageData复制代码

转载地址:http://qeivx.baihongyu.com/

你可能感兴趣的文章
改造 Android 官方架构组件 ViewModel
查看>>
Android应用开发性能优化
查看>>
[译]探索 ECMAScript 装饰器
查看>>
使用Phaser开发你的第一个H5游戏(一)
查看>>
Retrofit与LiveData结合
查看>>
React中组件通信的几种方式
查看>>
比特币源码分析-boost::signal的使用
查看>>
Java高级工程师——面试总结
查看>>
iOS App 稳定性指标及监测
查看>>
JAVASCRIPT. BUT LESS IFFY
查看>>
Swift 4官方文档中文版 The Basic(下)
查看>>
前端每周清单半年盘点之 Vue.js 篇
查看>>
算法:二分查找
查看>>
Reflected File Download Attack
查看>>
RAC的使用心得
查看>>
「译」内存管理碰撞课程
查看>>
数据结构系列全集
查看>>
使用jupyter(IPython)开发opencv
查看>>
写一个最简陋的node框架(2)
查看>>
并非 Null Object 这么简单
查看>>