使用阿里云oss图片处理实现大尺寸图片加载优化

背景

为方便客户减少图片的处理,h5端需要加载20m的大尺寸图片

思路

格式转换为webp
图片分割
懒加载

编码实战

import React, { useEffect, useState } from 'react';
import LazyLoad from 'react-lazyload';
import { View, Image } from '@tarojs/components';
import ss from './index.module.scss';function ImageComp({imageSrc,
}) {const [imgList, setImgList] = useState<string[] | []>([])useEffect(() => {const xhr = new XMLHttpRequest()xhr.open('get', `${imageSrc}?x-oss-process=image/info`)// 使⽤ xhr 对象中的 send ⽅法来发送请求 xhr.send()xhr.onreadystatechange = function () {// 监听xhr对象的请求状态 与服务器的响应状态if (this.readyState == 4 && this.status == 200) {// 如果响应就绪的话,就创建表格(拿到了服务器响应回来的数据xhr.responseText)console.log('xhr.responseText', JSON.parse(xhr.responseText))const imgInfo = JSON.parse(xhr.responseText)const heightUnit = Math.ceil(imgInfo.ImageWidth.value / 750); // 根据宽度确认是几倍图const heightSize = 600; // 用于分割的尺寸const imgNum = Math.ceil(imgInfo.ImageHeight.value / heightSize / heightUnit)const imgListTemp = Array.from(new Array(imgNum), (_, index) => `${imageSrc}?x-oss-process=image/format,webp/resize,w_750/indexcrop,y_${heightSize * heightUnit},i_${index}`)setImgList(imgListTemp)console.log('imgList', imgListTemp)}}}, [])return (<View className={ss.root}>{imgList.map(i => {return (<LazyLoad key={i} height={400} offset={200} once><Imagekey={i}style={{ width: '100%', height: '100%' }}src={i}/></LazyLoad>)})}</View>);
}export default ImageComp;

参考资料

阿里云对象存储oss>操作指南>数据处理>图片处理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/599425.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Transformer模型中前置Norm与后置Norm的区别

主要介绍原始Transformer和Vision Transformer中的Norm层不同位置的区别。 文章目录 前言 不同位置的作用 总结 前言 在讨论Transformer模型和Vision Transformer (ViT)模型中归一化层位置的不同&#xff0c;我们首先需要理解归一化层&#xff08;Normalization&#xff09;在…

阿里云大模型「让照片跳舞」刷屏朋友圈,有哪些信息值得关注?

介绍 大家好&#xff0c;我分享聊聊阿里通义千问APP中全民舞王功能。 网络热舞结合AI视频&#xff0c;这是以后不用学习跳舞&#xff1f; 可以尝试下效果&#xff0c;一张图片生成视频。 APP快速使用 搜索下载通义千问APP 打开APP&#xff0c;选中一张照片来跳舞。 这里…

了解webpack

1 概念 webpack是一个模块打包工具&#xff0c;他将各种不同类型的文件最终都打包成.js、.css、.png、.jpg4个类型的静态资源。 2 特点 模块化开发 用webpack之前&#xff0c;项目都是在html中引入一个个js文件来开发&#xff1b;而在webpack中&#xff0c;一切皆模块&#xf…

我的2023年总结:往前看,别回头

2023年已经结束&#xff0c;我借此机会回顾一下我的2023年&#xff0c;同时也为2024年立好flag。 文章目录 2023印象深刻的实战经历技术成长与规划技术分享与交流CSDN博客参加百度apollo技术讨论会 深入学习Redis源码多彩的生活张杰演唱会《漫长的季节》&#xff1a;往前看&am…

bat批处理文件_输出内容到文本

文章目录 1、echo str > test.txt&#xff08;覆盖原有内容&#xff09;2、echo str >> test.txt&#xff08;不覆盖原有内容&#xff0c;追加&#xff09; 1、echo str > test.txt&#xff08;覆盖原有内容&#xff09; 2、echo str >> test.txt&#xff0…

js根据二进制流获取文件类型

js根据二进制流获取文件类型 在JavaScript中,可以使用FileReader对象来读取二进制数据并判断其文件类型。 下面是一段示例代码: function getFileType(file) {return new Promise((resolve, reject) => {const reader = new FileReader();// 当加载完成时调用onload事件处…

C++64位游戏软件安全汇编与反汇编反调试 x64驱动开发进程保护进程隐藏驱动读写过保护 视频教程

├─课程1 x32dbgx64dbg驱动调试器反反调试器驱动调试环境搭载 │ 1.为什么要搭载驱动调试环境.mp4 │ 2.驱动调试环境搭载1.mp4 │ 3.三种过PG的方法.mp4 │ 4.驱动调试环境搭载2.mp4 │ 5.驱动调试与驱动进程保护对抗.mp4 │ ├─课程2 C64位游戏软件安全汇编与反汇编反…

代码随想录 718. 最长重复子数组

题目 给两个整数数组 nums1 和 nums2 &#xff0c;返回 两个数组中 公共的 、长度最长的子数组的长度 。 示例 1&#xff1a; 输入&#xff1a;nums1 [1,2,3,2,1], nums2 [3,2,1,4,7] 输出&#xff1a;3 解释&#xff1a;长度最长的公共子数组是 [3,2,1] 。 示例 2&#xff1…

C++ 类和对象 (下)

初始化列表&#xff1a; 之前所说的构造函数初始化严格意义上来说不能叫变量初始化&#xff0c;只能是称为赋初值&#xff0c;C给出了初始化列表的概念 标准写法&#xff1a; class Date { public:Date (int year ,int month, int day):_year(year),_month(month),_day(day)…

C++——stack的基本概念与常用接口

1.stack基本概念 概念:stack是一种先进后出(First In Last Out,FILO)的数据结构,它只有一个出口 图形剖析: ____________________________栈底 | | 数据元素 | || |________________________| || | 数据元素 | || |________________________| || | 数据元…

如何用离散二维卷积公式描述卷积过程(说实话,我没搞懂为什么索引为什么设置成对称的模式。)

问题描述&#xff1a;如何用离散二维卷积公式描述卷积过程&#xff08;说实话&#xff0c;我没搞懂为什么索引为什么设置成对称的模式。&#xff09; 众所周知&#xff0c;描述图像卷积过程&#xff0c;可以使用图形法描述&#xff0c;也可以用公式法描述&#xff0c;但是具体用…

ubuntu vi 方向键乱码问题解决方案

方向键乱码问题解决方案 这个其实很简单 只需要在终端输入apt-get install vim 待安装完成就可以了

第十课:计算机心理学、教育科技及奇点,天网,计算机的未来

第十课&#xff1a;计算机心理学、教育科技及奇点&#xff0c;天网&#xff0c;计算机的未来 第三十八章&#xff1a;计算机心理学0、计算机中用到的心理学原理1、易用度2、颜色强度排序和颜色排序3、分组更好记4、直观功能5、认出VS回想6、让机器有一定的情商以及Facebook的研…

新兴电商平台都有哪些?新手做哪个比较盈利?

我是电商珠珠 近年来的电商平台层出不穷&#xff0c;由于购物方式发生了改变&#xff0c;传统的电商模式已经不能满足当前人们的需求&#xff0c;所以在抖音推出电商-抖音小店后&#xff0c;让整个电商圈发生了全新的改变。 抖音小店的出现顺势将直播电商带了起来&#xff0c…

计算机研究生论文检索方法汇总

计算机研究生论文检索方法汇总 作为一名优质(冤种)计算机在读研究生&#xff0c;检索论文是一项不可或缺的技能之一。 一、paperwithcode paperswithcode是一个免费开放的资源平台&#xff0c;提供了机器学习领域的论文、代码、数据集、方法和评估表。在这里我们可以检索不同…

Python|使用Missingno库可视化缺失值(NaN)

在真实世界数据集的情况下&#xff0c;数据集中的某些值丢失是非常常见的。我们将这些缺失值表示为NaN&#xff08;非数字&#xff09;值。但是要构建一个好的机器学习模型&#xff0c;我们的数据集应该是完整的。这就是为什么我们使用一些插补技术来用一些可能的值替换NaN值。…

C语言多线程编程-线程同步

介绍 多线程编程&#xff0c;经常会遇到线程直接数据同步&#xff0c;为了保证数据访问安全&#xff0c;就必须考虑线程之间的同步问题。在C语言中&#xff0c;多线程编程的线程同步主要依赖于POSIX线程&#xff08;Pthreads&#xff09;库提供的同步原语。以下是一些关键的线…

DevOps(6)

目录 26.如何在Linux下跨不同的虚拟桌面共享程序&#xff1f; 27.无名&#xff08;空&#xff09;目录代表什么&#xff1f; 29.什么是守护进程&#xff1f; 30.如何从一个桌面环境切换到另一个桌面环境&#xff0c;例如从KDE切换到Gnome? 26.如何在Linux下跨不同的虚拟桌面…

你的网站或许不需要前端构建(二)

前一阵&#xff0c;有朋友问我&#xff0c;能否在不进行前端编译构建的情况下&#xff0c;用现代语法开发网站界面。 于是&#xff0c;就有了这篇文章中提到的方案。 写在前面 这篇文章&#xff0c;依旧不想讨论构建或不构建&#xff0c;哪一种方案对开发更友好&#xff0c;…