当前位置: 首页 > news >正文

【我不熟悉的css】04. jpg、png 合理使用图片格式

每日鸡汤:最大的退路就是靠自己

目录

前言

一、各种格式对比

1. gif

2. svg图片

3. png

4. jpg

二、压缩图片

1. tinypng

总结


前言

各种图片格式的区别我们都多少背诵过,但是我在实际应用中总是想不到!!

事情是这样的,有一个项目中,几个图片200kb左右,有点大,所以要让我压缩一下。图片是png格式的,我无论我怎么压缩,都少不了多少。然后同事说,可以改成jpg的,这样可以压缩得更小,果然!

让我们来整理一下,这里面会用到的知识点吧!


一、各种格式对比

1. gif

无损压缩、支持8 bit彩色、支持单一透明色(这个点,我至今开发过程中没用到过)、支持动图

我相信很多人和从前的我一样,对gif这个格式的印象,停留在微信表情包,以为gif都是能动的。其实不然,它作为一种图片格式,自然能支持静态图片!!(如果你不这么以为,当我没说)

作为表情包的格式,显然他的特点还有

  1. 多用于网页中
  2. 图片比较小
  3. 可以动

应用实例:这个是我遇到的,觉得有必要记录的一个应用场景

在富文本编辑器中,需要在光标所在位置加入loading的状态,类似三个点的那种,要求:

  1. 不影响编辑器的内容
  2. 是一个加载中的动态的效果

解决办法:

  1. 在编辑器内容后面使用after伪元素,这样不影响编辑器内容
  2. 给after伪元素增加一个背景图片(gif类型的动图)

2. svg图片

矢量图、不失真、可以手懂编码(可以去看我的这篇文章)

【我不熟悉的css 】02. 手动画一个svg图片_我有一棵树的博客-CSDN博客我不熟悉的csshttps://blog.csdn.net/qq_17335549/article/details/126603138

适用于雪碧图icon。svg图片一般用来做雪碧图icon,为了方便起见,每个项目都会增加雪碧图的功能,方便处理各种颜色、字号不同的小icon图片

3. png

无损压缩、因为是无损压缩所以一个内容丰富的图,如果用png格式会很大

适用于小图标。鉴于他的文件会很大,所以一半只有小图会用到png。比如网站的logo, 要保证清晰度(无损)同时logo不会很大,就很适合png图片。

在我今天遇到的这个项目中,我用png做了一个主页的整个背景图,很显然,不合理!!而且我无论怎么压缩都是200多kb,这也是因为png的格式是无损压缩的!现在记住了吧!!

4. jpg

有损压缩、不支持动画、不支持透明色

适用于对清晰度要求低的场景。

还是我今天遇到的问题,一个主页的背景图,对清晰度的要求没有那么高,所以我们完全可以使用jpg的格式,200kb的png图片,我使用jpg导出并压缩之后,仅剩30kb。

二、压缩图片

1. tinypng

     这是一个很好用的压缩png、jpg、webp、jpeg图片的网站

TinyPNG – Compress WebP, PNG and JPEG images intelligentlyMake your website faster and save bandwidth. TinyPNG optimizes your WebP, PNG and JPEG images by 50-80% while preserving full transparency!https://tinypng.com/


总结

总之,我们需要把平时积累的知识应用到项目开发过程中,你只背诵每个图片的格式的特性,但是开发过程中想不到也白搭,共勉!

相关文章:

  • Java的Lambda表达式学习笔记:使用lambda表达式
  • 2022-09-02
  • 14天刷爆LeetCode算法学习计划——Day05 快慢指针(2)
  • Redis进阶
  • 双软认定流程?
  • 淘宝如何选词打造黄金标题?构词规则是什么?
  • 跨境运营培训品牌商店设计技巧
  • 双软企业认证与税收优惠政策讲解(比较齐全)
  • Java处理Excel表格的读取和写入
  • MySQL之临时表
  • 氨丙基咪唑离子液体(AMIBr)改性纤维素气凝胶吸附剂(CAgAMIBr)的实验要求
  • Go 命名规范
  • 容灾演练月报 | 雅安市商业银行四大业务系统完成容灾切换演练
  • STM32CubeIDE实现printf重定向输出到串口
  • 解决:知乎中导入的md格式文档,公式不能居中,即使加了\\后也不能居中
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • 11111111
  • 30天自制操作系统-2
  • angular2 简述
  • AngularJS指令开发(1)——参数详解
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • git 常用命令
  • gitlab-ci配置详解(一)
  • Git的一些常用操作
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • js如何打印object对象
  • overflow: hidden IE7无效
  • react 代码优化(一) ——事件处理
  • use Google search engine
  • vuex 学习笔记 01
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 前端学习笔记之观察者模式
  • 前端之React实战:创建跨平台的项目架构
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 写代码的正确姿势
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • !!java web学习笔记(一到五)
  • ###C语言程序设计-----C语言学习(3)#
  • #{}和${}的区别是什么 -- java面试
  • (第27天)Oracle 数据泵转换分区表
  • (二开)Flink 修改源码拓展 SQL 语法
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (生成器)yield与(迭代器)generator
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • (转)拼包函数及网络封包的异常处理(含代码)
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案
  • .NET成年了,然后呢?
  • .NET关于 跳过SSL中遇到的问题
  • .NET国产化改造探索(三)、银河麒麟安装.NET 8环境
  • .net连接MySQL的方法
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • @EventListener注解使用说明