WEB应用图片的格式,以及各自的特点和优化(一) by FungLeo

前言

12年前我入行三天.用table布局做了一个非常粗糙的网页.我说了一句话,”网页就是表格加文字加图片,图片分两种,插入图片和背景图片”.

这句话在今天看来,当然是一个笑话.可是当时我说出这句话的时候,当时的那些前辈都非常认可我的总结,而且觉得我非常有从事网络发展的潜力啊.

哎,要不是他们的鼓舞,说不定我早转行了……

扯远了.说回正题,图片在网页当中,那是相当重要的.可其实,我们对图片是否真的理解得那么透彻呢?这篇博文,我们详细的来讲讲图片的那些事儿.

图片的种类

在网页运用中,图片是有非常多种类的.当中经常使用的有以下三种:

  1. jpg
  2. gif
  3. png
    1. png-8
    2. png-24

当中,png分为两种,8位和24位.在文件的后缀上,都是.png.

当然,另一些不经常使用的.

1. WebP 谷歌推出的图片格式,用来代替jpg格式,相同质量,体积约为jpg的三分之中的一个.相当的优秀.有点是占用带宽小,而且支持透明.缺点是,须要server计算能力多,而且除谷歌外,其它浏览器无法原生支持,而且比較排斥.

2. JPEG XR 微软推出的替代jpg的方案.也有非常多有点.缺点是,连谷歌都办不成的事儿…微软….

3. mozjpeg 火狐推出的替代jpg的方案,兼容jpg.缺点,谷歌微软都办不成的事儿…火狐….

4. ……

理想是美好的,现实是残酷的.我们有各种各样的方法去优化网络图片.可是,在这个多极世界,你的我不支持,我的你不支持,终于还是回到原点,继续使用老三样.

所以,我们还是掌握这三个吧.

JPG的特性以及优化

一般在网络上使用的JPG图片,它的后缀都是.jpg.可是,它还有其它后缀,比如,.jpeg.我们一般在使用中,会将其后缀统一为.jpg.

JPG图片格式有非常多长处.支持的色彩多,支持有损压缩,等等等等.

使用场景

文章内容配图,商品配图,主题页面高清背景图片等.

普通情况下,jpg都是作为内容图片出现的.那么我们怎样来优化JPG图片呢?

什么是图片优化?就是保证图片质量的情况下,尽可能的缩小图片的体积,以减少图片对于带宽的需求.

优化方式1,减小图片尺寸

这是最简单直接有效的优化JPG图片的方法.通过减小图片的尺寸,能够答复减少图片的体积.

比如,文章配图,文章文字的可视区域为700px宽.我们能够为文章配图为700px宽.可是,这个图片的体积可能比較大.因此,我们将图片等比缩小到500px宽,则能够大幅减少图片的体积.而且,在文章的可读性上,并没有得到太大的损失.

优化方式2,减少JPG图片质量

这是通过有损压缩的方式,来减少JPG图片的质量,达到优化图片体积的效果.这样的优化方式要慎重使用.在使用中,一定要注意观察图片的质量是否在能够接受的范围内.

我们以photoshop为例.打开一张图片,按 ctrl+shift+alt+s快捷键,打开”存储为web所用格式”

如上图所看到的,能够看到右上角的品质.默觉得60.这个品质能够基本保证图片的质量.而在面板的左下角,能够看到在这个品质以下,图片的体积大小为69.57K.假设你感觉这个尺寸较大,那么,我们能够尝试略微减少一下品质.在保证图片的视觉效果的基础上,尽可能的减少图片的体积.

优化方式3,虚化(高斯模糊)图片背景

首先,我们不能减少图片的尺寸,其次,我们也不能减少图片的质量.在这样的情况下,我们能够考虑将图片的局部背景,或者非主要表达的内容,给予高斯模糊的处理.经过高斯模糊后,会在相当程度上减少图片的存储体积.

这个须要一定的photoshop操作经验.这里不做详细演示了.假设你不会,问一下美工,就明确是怎么处理的了.

优化方式4,减少图片的亮度

一张高清图片,用作站点的高清背景素材.这个时候,图片的细节一定要保持得非常好.可是这样,图片一定非常大.假设,我们尝试减少一些图片的亮度,可能不会太影响站点的审美效果,可是同事图片的体积能得到一定的缩减.

不管採用什么方式来减少图片的存储体积,有一点是必须肯定的,那就是,必须保证图片的可视质量.

如上图所看到的,图片的体积是减少了,可是美美的照片变得花里胡哨的,肯定不是我们须要的.因此,怎么优化JPG图片,那是一个平衡,怎么找到这个最佳的平衡,须要在实际项目中的实际考量.

GIF的特性以及优化

GIF是一种具有动画性质的图片,它的长处是图片能够做得比較小.能够用来做动画,然后其还支持一位的透明(就是要么透明,要么不透明,不支持半透明),这些都是其长处.它也有一个非常大的缺点,就是仅仅支持索引颜色,也就是说,最多仅仅支持256个的颜色,这大大限制其使用的场景.

由于png-8在除了不能做动画这一个特性上输给了GIF,在其它方面完胜GIF格式(同等质量体积更小).因此,以往我们在使用GIF动画的地方,基本上都能够用PNG-8这个格式给代替.

因此,眼下GIF存在的唯一意义,就是——做动画.

那么,怎样优化GIF格式图片呢?方法有两个:

1.减少图片的尺寸

这是最有效的方法.理由不多说.

2.减少图片的索引颜色,比方从256减少到128

通过减少索引颜色,也能够有效减少图片的存储尺寸.

GIF动画的处理,PHOTOSHOP做得并非非常好.眼下有非常多人在视频软件中将视频的一个片段直接转成GIF动画.在转换的时候,将图片的尺寸缩小点就是了.

PNG-8的特性以及优化

PNG-8在除了动画这方面代替不了GIF,其它方面全然能够代替GIF素材.主要运用在网页的装饰性图片上,和一些大面积纯色显示的内容图片上(存JPG会比較大,可是存PNG-8就比較小,须要注意的是,由于是索引颜色,一定要注意图片的可视质量).

PNG-8的运用场景特别多,那么他要怎么优化呢?

1.减少图片的尺寸

仅仅是,PNG-8的用途一般都是装饰性图片,减少尺寸非常可能行不通.这一点是须要注意的.

2.减少图片的索引颜色

这一点非常有效.可是也要考虑图片的可视质量.

3.拼合多张PNG-8图片,组成一张”雪碧图”

我们可能没办法把一张图片的尺寸给减少,可是,我们能够通过组合多张PNG-8的装饰图片,形成一张较大的图片,一来减少了网页的连接数,二来,总体的减少了图片的尺寸.例如以下图,就是一个样例:

如上图所看到的,这是太平洋电脑网的首页的雪碧图.当我们使用雪碧图的时候,就必须在CSS中使用背景定位的方式来显示相应的图片.这个本文不做过多阐述.

这样做,能够大幅减少尺寸.非常推荐使用.

PNG-24的特性以及优化

PNG-24是一种无损压缩图片的存储格式,能够最高标准的保存图片的原有质量,而且支持8位透明(就是能够实现半透明)的图片存储格式.

它最大最大的长处是无损.仅仅是,在无损状态其体积比較庞大.因此,在实际WEB运用中,假设是须要高保真存储的图片,普通情况,还是存成jpg图片的多,由于,jpg图片能够保证图片的色彩和体积,而png-24是全然无法压缩的.所以在web设计中,实际运用场景,并非非常多.

可是,在第二种场景以下,其作用就全然不是其它不论什么一种格式能够替代的了,那就是,半透明图片.

没有不论什么其它的选择,仅仅能採用PNG-24位存储格式.那么,怎么优化呢?

1.减少图片的尺寸

其实是废话.一般半透明的使用,基本上都是装饰性的图片,那就不能缩小了.可是,尽可能的使用小一点的图片.

假设是基于高清图片,建议直接Jpg,那样设置的选择性很多其它.

2.拼合多张PNG-24图片,组成一张”雪碧图

理由和PNG-8是一样一样的.

总结

  1. 色彩丰富的、大的图片存储为jpg格式
  2. 尺寸小的,色彩不丰富的和背景透明的存储为png-8格式
  3. 动画使用gif格式
  4. 半透明的存储为png-24格式

终极优化方式——不採用图片,在设计的时候就大面积採用扁平化的设计,其设计元素仅仅须要得到色值就可以,不须要切图,那是最佳的优化.能不能做到,就看各位的设计师了.感谢苹果,感谢微软,感谢扁平化!

上面的总结,为大政方针.在详细的实践中,我们须要针对不同的问题,细致分析,认真处理,找到最佳平衡点,存储合适的图片.

本文FungLeo原创,转载请保留版权申明以及首发地址:http://blog.csdn.net/FungLeo/article/details/50923473

WEB应用图片的格式,以及各自的特点和优化(一) by FungLeo的更多相关文章

  1. web前端图片极限优化策略

    随着web的发展,网站资源的流量也变得越来越大.据统计,60%的网站流量均来自网站图片,可见对图片合理优化可以大幅影响网站流量,减小带宽消耗和服务器压力. 一.现有web图片格式 我们先来看下现在常用 ...

  2. 移动Web开发图片自适应两种常见情况解决方案

    本文主要说的是Web中图片根据手机屏幕大小自适应居中显示,图片自适应两种常见情况解决方案.开始吧 在做配合手机客户端的Web wap页面时,发现文章对图片显示的需求有两种特别重要的情况,一是对于图集, ...

  3. web前端图片上传(3)--filereader

    这篇文章主要是为了介绍一种文件上传的方式.当然文件中是包含图片的.如果大家仔细看我的第一篇web前端图片上传(1)就会知道,其实也是按照这种方式上传你的,但是由于上次时间比较紧张,没有详细的介绍今天的 ...

  4. Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程

    Asp.Net Core Web Api图片上传及MongoDB存储实例教程(一) 图片或者文件上传相信大家在开发中应该都会用到吧,有的时候还要对图片生成缩略图.那么如何在Asp.Net Core W ...

  5. ps如何制作gif(窗口->动画)(导出:存储为Web和设备所用格式)

    ps如何制作gif(窗口->动画)(导出:存储为Web和设备所用格式) 一.总结 1.点击窗口,选择动画 2.导出的时候:存储为Web和设备所用格式 二.ps如何制作gif 1.首先我们安装并打 ...

  6. 移动站Web开发图片自适应两种常见情况解决方案

    本文主要说的是Web中图片根据手机屏幕大小自适应居中显示,图片自适应两种常见情况解决方案.开始吧 在做配合手机客户端的Web wap页面时,发现文章对图片显示的需求有两种特别重要的情况,一是对于图集, ...

  7. 在word里插入图片,并设置图片的格式

    由于公司业务需要,需要在生成的word里插入图片(公司印章),仔细想了下,还是在word模板里添加一个书签,然后再该书签的位置插入图片,并设置图片的格式方便些: 代码如下: using System; ...

  8. 用qt代码怎样编写图片保存格式[qt4.6]

    用qt代码怎样编写图片保存格式 qt提供了多个保存图片的接口,比较常用的接口如下 bool QPixmap::save ( const QString & fileName, const ch ...

  9. [Web API] 如何让 Web API 统一回传格式以及例外处理[转]

    [Web API] 如何让 Web API 统一回传格式以及例外处理 前言 当我们在开发 Web API 时,一般的情况下每个 API 回传的数据型态或格式都不尽相同,如果你的项目从头到尾都是由你一个 ...

随机推荐

  1. 细说 iOS 消息推送

    APNS的推送机制 与Android上我们自己实现的推送服务不一样,Apple对设备的控制很严格.消息推送的流程必需要经过APNs: 这里 Provider 是指某个应用的Developer,当然假设 ...

  2. Qt样式表之盒子模型(以QSS来讲解,而不是CSS)

    说起样式表,不得不提的就是盒子模型了,今天小豆君就来给大家介绍下盒子模型. 上图是一张盒子模型图. 对于一个窗口,其包括四个矩形边框.以中间的边框矩形(border)为基准,在border外侧的是外边 ...

  3. IO流学习笔记

    1.File类 文件和目录路径名的抽象表示形式. 4种构造方法 File(File parent, String child) File(File parent, String child) File ...

  4. 洛谷P1143 进制转换

    题目描述 请你编一程序实现两种不同进制之间的数据转换. 输入输出格式 输入格式: 输入数据共有三行,第一行是一个正整数,表示需要转换的数的进制n(2≤n≤16),第二行是一个n进制数,若n>10 ...

  5. HDU 2333 Assemble(二分)

    Assemble Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Su ...

  6. Linux库文件路径的添加

    库文件在连接(静态库和共享库)和运行(仅限于使用共享库的程序)时被使用,其搜索路径是在系统中进行设置的.一般 Linux 系统把 /lib 和 /usr/lib 两个目录作为默认的库搜索路径,所以使用 ...

  7. 将二级目录下的文件合并成一个文件的Python小脚本

    这个小程序的目的是将二级目录下的文件全部合并成一个文件(其实几级目录都可以,只要做少许改动) #coding:utf8 import sys, os def process(path): new_fi ...

  8. 【JavaScript】--JavaScript总结一览无余

    对于 北风网李炎恢老师的JavaScript的视频也真的是醉了.视频整体来说结构清晰.内容比較简单.JS是一种灵活,开放的语言,语法规则并没有那么的死板.非常easy让人接受. JS的基础部分跟C#类 ...

  9. COOKIE传值

    1.遍历所有cookie foreach (string  _key in Request.Cookies.AllKeys)//遍历主键            {                Htt ...

  10. redhat6.5安装10201解决办法

    rpm --import /etc/pki/rpm-gpg/RPM*yum install -y  --skip-broken compat-libstdc++* elfutils-libelf* g ...