《响应式Web图形设计》一13.3 自适应图像解决方案

简介:

本节书摘来异步社区《响应式Web图形设计》一书中的第13章,第13.3节,作者: 【美】Christopher Schmitt 译者: 曾斌 责编: 赵轩,更多章节内容可以访问云栖社区“异步社区”公众号查看。

13.3 自适应图像解决方案

响应式Web图形设计
为了处理自适应图像的大小问题,下面给出一些可以采用的方法。

13.3.1 另寻他法

一个看起来不太像解决方法的方法是:永远不要使用光栅图像,而要依赖其他格式的图像。

既然问题的核心是光栅图像的文件大小,那么如果我们可以使用其他文件格式或者技术来进行视觉呈现,自然也就可以减轻甚至消除自适应图像的麻烦了。

可以使用的技术有以下两种。

  • SVG——矢量图像就是为了缩放图像而存在的(见图13.8)。凭借前所未有的强大的浏览器的支持,如果你想要一张色彩简单或者线条简洁的图像,以前你通常会保存为GIF格式,但现在可以选择保存为SVG了(SVG的更多信息请参见第6章)。

8_9

  • 图标字体(Icon fonts)——字体与SVG类似,都是矢量图形,因此缩放效果很好。使用图标字体(见图13.9,在第10章中讨论过)是处理图形缩放边缘问题的绝妙办法。
  1. 虽说我们显然不可能完全放弃光栅图像,但作为替代方法,终归可以作为选项之一。你或许没法丢弃你所有的光栅图标,但是将其中的一部分转化成为SVG或者图标字体,总是可以让你的网站更为“响应式”。

13.3.2 压缩Retina图像

在为网页创建图像的时候,最好根据它们在浏览器中呈现的尺寸进行输出。例如,我们可以使用Photoshop生成一张115×115像素的GIF图像来作为头像图像,如图13.10所示。如果生成一张1 150×1 150像素的图像,那等于是强迫用户下载一张巨大的图像,这没有什么好处。

1.秘诀
不过既然响应式Web设计是通过设置百分比宽度来缩放图像的,我们就可以使用一张超大的图像,然后尽可能地将其压缩。虽然压缩后的图像在100%大小的时候可能看起来不完美,如图13.11所示。但是没关系,我们通过缩小图像来填满栏中的剩余空间,这些看似粗糙的瑕疵便会被遮掩起来。


10_11

举个例子,我们可以找一张图像,先取其实际大小:2 276 px×1 400 px,然后将图像压缩至0%质量(100%压缩),结果图像大小变成了460 kb。再使用ImageOptim对这张图像进一步压缩(正如我们在第7章中介绍的)。如图13.12所示,这张图像被进一步减少了14 kb,最终尺寸为446 kb。

虽然这张超大图像的体积依然比一般屏幕上的中等大小或者大尺寸图像大一些(见表13.2),但对于绝大多数设备来说,该图像已经够用了,因此这种方法值得考虑,如图13.13所示。


12_13

在老版本IE浏览器中使用SVG

老版本的IE浏览器本身不支持SVG。为了解决这个问题,可以使用jQuery插件(网址是

http://github.com/teleject/svg-swap)将所需图像转成光栅图像,或者使用Modernizr(网址是http://modernizr.com)来检测浏览器对SVG图像是否支持。

b2

2.注意事项
这种方法并不适用于所有图像。避免使用这种方法处理色彩对比强烈或者有大范围渐变的图像,如图13.14所示。


14

如果图像有大范围的渐变,压缩会引起条带色彩或者色调分离。对比强烈的图像在进行JPEG压缩时的效果不够好。为了缩小体积而丢失色彩数据后,JPEG很难保持色彩的平滑过渡。

最好是在色调、整体亮度相近的图像上使用这些方法。图像的直方图(见图13.15)应呈现平滑的“山脉”形状,而非尖锐的突起(见图13.16)。


15_16

相关文章
|
8月前
|
运维 监控 安全
EventLog Analyzer:高效的Web服务器日志监控与审计解决方案
ManageEngine EventLog Analyzer是一款企业级Web服务器日志监控与审计工具,支持Apache、IIS、Nginx等主流服务器,实现日志集中管理、实时威胁检测、合规报表生成及可视化分析,助力企业应对安全攻击与合规挑战,提升运维效率。
403 1
|
移动开发 开发者 HTML5
构建响应式Web界面:Flexbox与Grid的实战应用
【10月更文挑战第22天】随着互联网的普及,用户对Web界面的要求越来越高,不仅需要美观,还要具备良好的响应性和兼容性。为了满足这些需求,Web开发者需要掌握一些高级的布局技术。Flexbox和Grid是现代Web布局的两大法宝,它们分别由CSS3和HTML5引入,能够帮助开发者构建出更加灵活和易于维护的响应式Web界面。本文将深入探讨Flexbox和Grid的实战应用,并通过具体实例来展示它们在构建响应式Web界面中的强大能力。
299 3
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
981 3
|
缓存 前端开发 JavaScript
前端技术探索:构建高效、响应式Web应用的秘诀
前端技术探索:构建高效、响应式Web应用的秘诀
418 0
|
人工智能 搜索推荐 IDE
突破网页数据集获取难题:Web Unlocker API 助力 AI 训练与微调数据集全方位解决方案
本文介绍了Web Unlocker API、Web-Scraper和SERP API三大工具,助力解决AI训练与微调数据集获取难题。Web Unlocker API通过智能代理和CAPTCHA绕过技术,高效解锁高防护网站数据;Web-Scraper支持动态内容加载,精准抓取复杂网页信息;SERP API专注搜索引擎结果页数据抓取,适用于SEO分析与市场研究。这些工具大幅降低数据获取成本,提供合规保障,特别适合中小企业使用。粉丝专属体验入口提供2刀额度,助您轻松上手!
793 2
|
网络协议 Java Shell
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
1037 7
|
前端开发 开发者 容器
构建响应式Web界面:Flexbox与Grid布局的深度解析
【10月更文挑战第11天】本文深入解析了CSS3中的Flexbox和Grid布局,探讨了它们的特点、应用场景及使用方法。Flexbox适用于一维布局,如导航栏;Grid布局则适用于二维布局,如复杂网格。通过示例代码和核心属性介绍,帮助开发者灵活构建响应式Web界面。
464 5
|
JavaScript 前端开发 网络架构
如何使用Vue.js构建响应式Web应用
【10月更文挑战第9天】如何使用Vue.js构建响应式Web应用
|
JavaScript 前端开发
如何使用Vue.js构建响应式Web应用程序
【10月更文挑战第9天】如何使用Vue.js构建响应式Web应用程序
|
前端开发 JavaScript 测试技术
构建响应式Web应用程序:React实战指南
【10月更文挑战第9天】构建响应式Web应用程序:React实战指南