【业务】项目中的图片处理以及预加载

uniapp图片处理进阶技巧:如何优雅实现预览、下载与保存到相册 本文深入探讨了Uniapp项目中图片处理的进阶实践,重点解析了如何利用`uni.previewImage`和`uni.downloadFile`等API,优雅地实现图片预览、下载与保存到相册的全流程。内容涵盖预览功能的深度定制、下载过程的健壮性设计、多端保存的权限与兼容性处理,并提供了构建高复用性组件的工程化方案,旨在提升应用的用户体验与开发效率。 阅读详情

项目中的图片处理和图片预加载

1.问题

在项目中,如果包含了太多图片等静态资源,那么打包后的文件会非常大,如果不进行一些处理,会导致非常糟糕的浏览体验。

2.解决

1.图片压缩

这里联我想到的第一种方法就是压缩静态资源的大小,像很多正式项目比如:微信、钉钉、b站等等都会自动压缩图片视频。

图片视频的压缩可以使用下面三个工具:

  1. TinyPNG : 傻瓜式操作,一键压缩,画质不变
  2. squoosh : 简单好用的在线图片压缩工具,可选画质、尺寸等参数
  3. img-compressor : 一个简单高效的JS图片压缩库,项目中有上传图片的,可以控制图片体积,就像微信钉钉一样

但这种方法在图片较多时,效果有限,无法从根本上解决问题。

2.图片云存储

第二种方法就是将图片等资源上传到云上,然后再使用外链的方式引入。

这种方式也是在实际开发中较为常用的方法,一般都是将图片上传到服务器(例如:OSS)上,然后在页面中通过 url 的形式引入图片。

但这种方式仍然需要先下载后加载,而下载速度较慢时,仍然会导致用户体验糟糕,例如图片未加载时,出现白屏的现象。

这样就引出了图片预加载的需求。

3.图片预加载

对于一个项目,其会有首屏的概念,即进入项目后的第一个页面。

而图片预加载就是在首屏加载完毕后,预先加载其它页面所需的图片,这样,切换到该页面时,浏览器就不需要再去请求该图片,直接渲染即可。

那么,如何实现?

以一个vue项目为例,在首页加入以下内容:

// 请求后端,获取url列表
const getUrls = async (data) => {
	let res = await getUrlsFormSer(...data);
    return res.result.urlList
}
// 预加载的方法
const preLoadImgs = (urlList) => {
    urlList.keys().forEach(key => {
        new Image().src = urlList(key)
    })
}

// 在组件创建完毕后,进行预加载
created(() => {
    // 在window.onload完毕后,开始预加载图片
    window.onload = () => {
        let urlList1 = getUrls(data1);
        let urlList2 = getUrls(data2);
        let urlList3 = getUrls(data3);
        ...
        preLoadImgs(urlList1);
        preLoadImgs(urlList2);
        preLoadImgs(urlList3);
        ...
    }
})

注意点:

  • 预加载的关键点:new Image().src = xxx,这个操作相当于给浏览器缓存了图片的路径!所以可以达到预加载的效果,后续在其它页面中直接使用 url 引入时加载会更快,因此不会出现白屏的现象。
  • 执行时机:在首屏的window.onload完毕后,进行预加载。因为首屏包含的图片无需预加载,window.onload意味着文档及图片加载完毕,也就是说,首屏加载完毕时才会去执行上述的图片预加载代码。
  • 如果将大量的图片都进行预加载,可能会阻塞后续的任务!

总结

适当的预加载图片可以提升用户体验,但它不会提高网站的性能!

如果要提升网站性能,可以使用下面的两种方法。

1.懒加载

HTMLImageElement.loading : 图片可以通过设置loading属性值为lazy的方式,实现图片的懒加载(图片仅在马上要出现在可视视口中时开始加载)

<img src="@/assets/images/tech-3.png" loading="lazy"/>
2.延迟加载

图片延迟加载策略

首屏的加载速度至关重要,当首页的图片过多时,可以只加载首屏可见区域的图片,其它延迟加载!

美图前端面经:Canvas/WebGL影像性能优化与图片处理实战复盘 前端性能优化是工程实践的核心能力,尤其在图片处理与影像类业务中,Canvas渲染、WebGL像素级操作、图片压缩与上传、移动端适配等环节,直接决定了用户体验的流畅度与稳定性。理解浏览器从图片请求、解码到合成显示的完整链路,掌握离屏Canvas、requestAnimationFrame、对象URL释放、并发控制等关键技术,能够帮助开发者系统性地解决渲染卡顿、内存泄漏与加载缓慢等常见问题。这些技术不仅广泛应用于图片编辑、滤镜特效、批量上传等真实业务场景,更是影像类前端岗位的高频考察重点。本文基于一场真实的美图 阅读详情

相关推荐

vue进行图片的预加载watch用法实例讲解

下面小编就为大家分享一篇vue进行图片的预加载watch用法实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

超详细的图片预加载和懒加载教程

最近接手一个项目 。 结果光安装依赖都出现了一堆 麻烦 。 好不容易处理完一个 , 又来一个 。头疼啊 看到之前有一些预加载的学习笔记。于是又查查找找 ,想想写写 把预加载和懒加载的笔记写完整 发现制图挺麻烦的!不知道你们有没有什么推荐? 写了挺久的这篇文章,有什么不对的地方欢迎评论或私聊指出 图片的预加载和懒加载 预加载和懒加载的字眼总会看到 。 其实预加载和懒加载不仅仅是用于加载图片资源。其他资源,文字,视频。都可以。 我们较常用或较需要使用的场景就是加载图片资源。 这里,我们也只讨论加载图片资源。.

FOR 的博客 9335

告别手动解析!用这个Qt库轻松处理Cat 21/62等18种Asterix航空数据

本文介绍了基于Qt框架的高效Asterix报文解析库,帮助开发者轻松处理Cat 21/62等18种航空数据。该库通过协议抽象化、多维度API设计和跨平台支持,解决了手动解析的复杂性和易错问题,显著提升开发效率和系统可靠性。

weixin_42529366的博客 207

前端性能优化-图片的预加载和懒加载

在说到对图片资源进行优化时,那就不得不提到图片预加载和图片懒加载,可能很多朋友都了解这两者,但是一直没有很清晰的概念,以及什么时候用,用在什么场景下,今天就来详细的了解一下吧!

weixin_43279210的博客 4523

【coze实战】基于Coze的公众号图文自动化生成工作流实战解析

【coze实战】基于Coze的公众号图文自动化生成工作流实战解析

大家好,我是码农老gou,一名专注于编程技术的程序员。在这个博客中,我将与大家分享我在工作和学习中的经验、见解以及一些实用的技术干货。 1万+

ESP32-S3 SPI接口实战:从引脚分配到高速通信配置

本文详细解析了ESP32-S3的SPI接口配置与高速通信优化技巧,从引脚分配到软件配置,再到DMA传输和时钟优化,帮助开发者快速掌握SPI通信技术。特别针对ESP32-S3的SPI2接口进行了实战演示,包括硬件连接和常见问题排查,适用于各类嵌入式开发项目。

weixin_29189373的博客 676

图片预加载的三种方法

转载: 图片预加载的三个方法 - 浅夏初晴 - 博客园利用CSS、JavaScript及Ajax实现图片预加载的三大方法 预加载图片是提高用户体验的一个很好方法。图片预先加载到浏览器中,访问者便可顺利地在你的网站上冲浪,并享受到极快的加载速度。 这对图片https://www.cnblogs.com/hjt-7/p/6293310.html ...

前端小胡兔的博客 2720

使用FileZilla在武汉大学IGS数据分析中心下载GNSS数据

2.依次点击如下图标下载到本地并解压安装(按系统选择要下载的版本)

qq_43381998的博客 6040

图片的预加载和懒加载

图片的预加载和懒加载

zy_lalala的博客 2327

从零打造高速 SerDes 系统:一步步教你生成 IBIS-AMI 模型!(含Simulink实操)

一个完整的 SerDes 系统,不止是电路设计,更是 SI 仿真、IBIS建模、系统验证三位一体的过程。用 MATLAB 的 SerDes Designer + Simulink 组合拳,不仅可以快速完成设计,还能无缝衔接工业标准流程,非常适合个人学习 & 企业验证。如果你还没用过,建议马上动手试一遍,毕竟:“光说不练假把式,跑出眼图才是王道!”🔥。

weixin_43199439的博客 1142

OpenOCD入门到精通:第 1 章 OpenOCD 概述

OpenOCD是一款开源的片上调试工具,支持60+调试适配器和8大处理器架构。它提供三大核心功能:片上调试、在系统编程和边界扫描测试。作为嵌入式开发工具链的中间桥梁,OpenOCD连接上层IDE/GDB与底层硬件,采用分层架构设计实现硬件兼容性。其配置基于Tcl脚本语言,支持网络服务接口,广泛应用于ARM、RISC-V等芯片的调试与烧录场景。

从事嵌入式linux android驱动开发,拥有全栈能力 1398

JavaScript图片预加载方法详解

本文介绍了四种JavaScript图片预加载技术:1)基础Image对象预加载,简单兼容但无进度反馈;2)XMLHttpRequest方法支持进度显示但代码复杂;3)CSS隐藏元素预加载实现简单但无法监控状态;4)Promise批量预加载适合图库应用。演示页面允许用户体验不同方法,展示加载效果和进度条,并提供了清除功能。建议根据需求选择方法,简单场景用基础预加载,需要进度显示用XMLHttpRequest,大量图片采用批量预加载,同时注意处理失败情况。

油墨香^-^的博客 961

肺癌术后随访离散选择实验(DCE)设计与SAS实现

随着肺癌早期诊断和治疗技术的进步,肺癌患者的生存率显著提高,术后随访管理成为提升患者生活质量的关键环节。然而,如何在有限的医疗资源下设计出既符合患者需求又具有成本效益的随访方案,是临床决策面临的重要挑战。 离散选择实验(Discrete Choice Experiment, DCE)是一种定量研究方法,通过模拟真实世界的选择情境,测量患者对不同随访方案属性的偏好程度。本研究旨在通过DCE方法,系统评估肺癌术后患者对随访服务的偏好,为制定以患者为中心的随访策略提供循证依据。

huanghm88的专栏 96

ImageSelector企业级应用:在大型项目中如何优雅使用

ImageSelector是一款功能强大的Android图片选择器,完美仿制微信图片选择器的样式和效果。它支持图片单选、限数量多选和不限数量多选,提供图片剪切、预览和文件夹切换功能,同时支持选择时调用相机拍照或直接调用相机拍照,是企业级Android项目中处理图片选择需求的理想解决方案。 ## 🌟 核心功能解析:为什么选择ImageSelector? ### 灵活的选择模式 ImageSel

gitblog_00376的博客 701

9、自动定理证明的发展历程与关键技术

本文全面介绍了自动定理证明的发展历程、关键技术及其实际应用,包括消解原理、参数化、支撑集策略等核心方法,并探讨了算法优化、数据结构优化及并行计算等提升效率的手段。同时,文章展望了未来发展方向,如深度学习在定理证明中的应用、交互式定理证明以及高阶逻辑的研究前景。

ll5678的博客 505

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

基于用户意图的预加载(Intent-Based Preload):降低感知延迟的 React 实践与 open-slide 源码印证

预加载(Preload)的核心思想是"在用户真正需要之前,先把重资源准备好"。本文以 open-slide 仓库中 [.agents/skills/vercel-react-best-practices/rules/bundle-preload.md](https://link.gitcode.com/i/b57c14b95a3bac16f3f71c991ca928d0) 规则文档为主体,系统讲解

gitblog_00359的博客 451

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

从相册到明信片:Android图片处理与分享功能全解析

本文全面解析了Android平台上图片处理与分享功能的实现方案,特别针对明信片系统应用场景,从架构设计到具体技术实现提供了专业指导。内容涵盖图片选择优化、高级编辑功能开发、现代化存储方案以及智能分享功能实现,帮助开发者构建高效、稳定的图片处理链路。

weixin_30832143的博客 466

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

深度解析:Dify工作流图片处理技术的演进与实战指南

在当今AI应用开发领域,Dify作为领先的低代码平台,正在重新定义工作流构建方式。图片处理作为人机交互的关键环节,其技术实现经历了从基础嵌入到智能渲染的演进过程。本文将通过技术对比、性能分析和实战案例,全面解析Awesome-Dify-Workflow项目中图片处理的最佳实践。 ## 技术演进:从静态嵌入到动态渲染的范式转变 ### 传统静态嵌入方案的技术局限 早期Dify工作流中的图片处理

gitblog_00652的博客 707

iOS图片加载架构:基于Kingfisher的MVVM图片处理模块设计

你是否正面临这些问题: - **内存爆炸**:列表滑动时内存占用飙升,触发系统内存警告 - **UI阻塞**:图片解码/处理耗时导致界面卡顿(FPS

gitblog_00621的博客 365

终极指南:Spree图片处理 - 商品图片优化与响应式加载技巧

Spree是一个开源电子商务平台,提供完全的控制和自定义能力,采用模块化和API优先的设计,可以构建任何业务所需的电子商务解决方案。对于电商网站而言,商品图片是吸引顾客的关键因素,优化图片加载和显示效果直接影响用户体验和转化率。 ## 为什么商品图片优化对电商至关重要 📊 在电商领域,高质量的商品图片是促成购买决策的核心要素。研究表明,67%的消费者认为图片质量是购买决策的关键因素,而加载缓

gitblog_00595的博客 380

Java冷启动从30秒到0.5秒:Serverless函数预加载优化实战

冷启动是Serverless平台中函数实例从零启动到可处理请求的延迟,在Java应用中尤其显著,常导致响应超时。其根源在于JVM初始化、类加载和框架启动叠加,而传统懒加载机制在函数频繁重建时放大开销。通过AppCDS类归档、启动钩子预加载和平台常驻实例等手段,可将依赖加载前置,显著缩短冷启动时间。本文以Azure Functions为例,详细拆解冷启动时间分布,给出从JVM调优到平台配置的完整方案,适用于云函数、弹性计算等Serverless场景的性能优化。

weixin_30225755的博客 206

美图 IT 老兵:关于大规模图片处理和全球云端处理架构思考

5 月 25 日,全球最具影响力的高端技术人学习成长社交平台——TGO 鲲鹏会邀请了不同领域的技术管理者,从案例和实践出发,一起分享讨论自己在架构设计方面的想法和宝贵经验,深入解读可扩展、高可用架构。在活动现场,美图公司技术总监王静波结合美图公司现状为大家分享了在大规模的场景及其需要支撑全球用户的场景下,美图如何运用面向未来的云端流程处理系统,从根本上解决处理时长、可用性和成本等问题。 6 月 1...

weixin_45189747的博客 1517

关于懒加载及项目中图片优化

懒加载: 在页面上的未可视区域可以添加一个滚动条事件,判断图片位置与浏览器顶端 的距离与页面的距离,如果前者小于后者,优先加载。 如果为幻灯片、相册等,可以使用图片预加载技术,将当前展示图片的前一张和后一张优先 下载。 如果图片为css 图片,可以使用CSSsprite,SVGsprite,Iconfont、Base64 等技术。 如果图片过大,可以使用特殊编码的图片,加载时会先加载一张压缩的特...

weixin_43067272的博客 420

Lexical富文本编辑器图片处理全攻略:从拖拽上传到智能裁剪的完整方案

在构建现代富文本编辑器时,图片处理往往是开发者面临的最大挑战之一。传统方案在处理图片上传、裁剪和预览时常常遇到性能瓶颈和用户体验问题。Lexical作为Meta开发的高性能编辑器框架,通过其插件化架构和虚拟DOM机制,为图片处理提供了全新的解决方案。本文将深入探讨如何利用Lexical构建现代化的图片处理流程,彻底解决传统编辑器在图片处理上的效率问题。 ## 问题分析:传统图片处理方案的痛点

gitblog_00085的博客 764

Vue 3 本地图片与静态资源加载:Vite 路径、哈希与预加载

在前端工程中,静态资源加载涉及构建工具如何解析路径、生成产物与利用缓存。Vite 对 src 下资源参与构建并做哈希重命名,public 目录则原样拷贝,这决定了图片、字体和图标在开发与生产环境中的 URL 行为。理解这套模型,能带来构建期校验、缓存控制和子路径部署适配等技术价值。在 Vue 3 组件、CSS 背景、动态路径和批量图标导入等场景中,常需用到 import、new URL 与 import.meta.glob,并配合资源预加载与并发控制提升体验。围绕 Vue 3 本地图片与静态资源处理,从路径

weixin_34242819的博客 377

项目概述:小虾米壁纸小程序

项目定位:一款基于 uni-app 框架开发的壁纸分享小程序,为用户提供海量精美壁纸的浏览、下载、评分和分享功能。技术背景采用 Vue 3 (script setup) 语法,配合 uni-app 跨端框架目标平台:微信小程序 + H5使用 SCSS 进行样式开发业务需求首页推荐:轮播图、公告、每日推荐、专题精选分类浏览:按分类查看壁纸列表预览详情:大图预览、评分、下载、分享用户中心:下载记录、评分记录、联系客服搜索功能:关键词搜索、历史记录、热门推荐层次技术说明框架。

2401_83539958的博客 194
上一篇: 【Vue】$nextTick 应用及源码解析
下一篇: 【JS异步】Promise
cannotbecounted
博客等级 码龄7年 101粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值