圖片加載優化(縮略圖)

縮略圖

系統目前的問題:首頁直接加載原圖,原圖文件通常比縮略圖大數倍甚至數十倍,不僅導致加載時間長,還會造成大量流量浪費。

解決方案:上傳圖片時,同時生成一份較小尺寸的縮略圖。用戶瀏覽圖片列表時加載縮略圖,只有在進入詳情頁或下載才加載原圖。

實現方案

生成縮略圖的方法和“圖片壓縮”一致,可以使用本地圖像處理類庫,也可以利用第三方云服務完成。

第三方云服務的參數:

后端開發

1)數據表 picture 新增縮略圖字段:

ALTER TABLE picture-- 添加新列ADD COLUMN thumbnailUrl varchar(512) NULL COMMENT '縮略圖 url';

2)PictureMapper.xml 新增縮略圖字段:

<result property="thumbnailUrl" column="thumbnailUrl" jdbcType="VARCHAR"/>
<!-- ... -->
<sql id="Base_Column_List">id,url,thumbnailUrl,name,introduction,category,tags,picSize,picWidth,picHeight,picScale,picFormat,userId,createTime,editTime,updateTime,isDelete
</sql>

3)數據模型新增縮略圖字段,包括 Picture 類、PictureVO 類、UploadPictureResult類:

/*** 縮略圖 url*/
private String thumbnailUrl;

4)縮略圖處理

首先明確我們使用的縮放規則,設置最大寬高后,對圖片進行等比縮小。且如果縮略圖的寬高大于原圖,則不會處理。

修改 CosManage 的上傳圖片方法,補充對縮略圖的處理:

  //圖片縮放PicOperations.Rule thumbnailRule = new PicOperations.Rule();thumbnailRule.setBucket(cosClientConfig.getBucket());String thumbnailKey = FileUtil.mainName(key) + "_thumbnail." + FileUtil.getSuffix(key);thumbnailRule.setFileId(thumbnailKey);thumbnailRule.setRule(String.format("imageMogr2/thumbnail/!%sx%sr", 256, 256));rules.add(thumbnailRule);

修改PictureUploadTemplate 的上傳圖片方法,獲取到縮略圖:

   //設置縮略圖uploadPictureResult.setThumbnailUrl(cosClientConfig.getHost() + "/" + thumbnailCiObject.getKey());

5)測試

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/85791.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/85791.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/85791.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

GO語言---數組

文章目錄 數組的基本特性數組的聲明和初始化數組元素的訪問和操作數組遍歷多維數組數組的長度和容量數組作為函數參數數組與切片的區別注意 數組是Go語言中最基本的數據結構之一&#xff0c;它是一組相同類型元素的固定長度序列。 數組的基本特性 1、固定長度&#xff1a;數組…

7.5.3_1處理沖突的方法-拉鏈法

知識總覽&#xff1a; 拉鏈法&#xff1a; 開始散列表中沒有存儲任何數據元素即散列地址上的元素是空的&#xff0c;散列地址可以視為鏈表的頭指針&#xff0c;即沒有插入任何元素前鏈表的頭指針是空的。一個散列地址對應一個鏈表&#xff0c;散列地址上實際沒有存數據元素&am…

鴻蒙運動項目開發:項目運行環境切換器

##鴻蒙核心技術##運動開發# 在開發鴻蒙運動項目時&#xff0c;管理不同運行環境&#xff08;如開發環境、測試環境、生產環境&#xff09;是一個常見的需求。通過合理地切換運行環境&#xff0c;開發者可以方便地進行調試、測試和部署。本文將介紹如何實現一個項目運行環境切換…

Linux內核中安全創建套接字:為何inet_create未導出及正確替代方案

引言 在Linux內核開發中,當驅動程序需要創建網絡套接字時,開發者常會遇到一個關鍵問題:核心函數inet_create(負責初始化IPv4套接字)并未導出到內核符號表。本文深入剖析這一設計決策背后的邏輯,并提供驅動程序安全創建套接字的實踐方案。 一、inet_create未導出的深層原…

63、不同路徑II

題目 解答&#xff1a; 初始化和特殊情況比較麻煩的dp obstacleGrid(0,0)1的&#xff0c;直接return 0即可。入口都被堵住了還怎么走。 mn1情況&#xff0c;直接判斷 第一行初始化&#xff1a;dp[1][0]->dp[i][0] 碰到有障礙物的&#xff0c;從當前格子開始到末尾全部置…

wx小程序登錄設置角色

背景。pc端登錄后在訪問業務鏈接時可以根據固定獲取用戶的方法LoginUser user LoginHelper.getLoginUser(); 獲取到用戶信息。但wx端登錄后無法獲取。原因處在登陸時對用戶信息的設置方面pc端和小程序端登錄沒有使用相同的登錄方法。排除得知wx端小程序登錄時沒有設置角色。所…

MySQL5.7 慢查詢SQL語句集合

文章目錄 1. 按平均執行時間排序的慢查詢2. 按總執行時長排序的慢查詢3. MySQL 5.7 慢查詢配置檢查4. 掃描行數分析&#xff08;找出全表掃描&#xff09;5. 高頻執行的慢查詢6. 當前正在執行的查詢7. 慢查詢統計匯總8. 表結構和索引分析8.1 表索引詳情查詢8.2 表大小統計 1. 按…

MySQL學習(1)——基礎庫操作

歡迎來到博主的專欄:MySQL學習 博主ID:代碼小豪 文章目錄 數據庫原理基礎庫操作增刪數據庫數據庫編碼與校驗規則驗證不同的校驗規則對于庫中數據的影響 備份與恢復數據庫 數據庫原理 mysql版本:mysql8.0 操作系統:ubuntu22.4 為了減少由于環境配置以及權限限制帶來的使用問題&…

C++法則12:右值引用的核心目的:支持移動語義(Move Semantics)

C法則12&#xff1a;右值引用的核心目的&#xff1a;支持移動語義&#xff08;Move Semantics&#xff09; 右值引用&#xff08;Rvalue Reference&#xff09;是C11引入的最重要特性之一&#xff0c;其主要設計目的就是支持移動語義&#xff08;Move Semantics&#xff09;。 …

【LLM學習筆記4】使用LangChain開發應用程序(上)

目錄 前言一、模型、提示和解析器&#xff08;model、prompt、parsers&#xff09;二、儲存三、模型鏈四、基于文檔的問答1.使用向量存儲查詢2. 結合表征模型和向量存儲使用檢索問答鏈回答問題 前言 在前面兩部分&#xff0c;我們分別學習了大語言模型的基礎使用準則&#xff…

Negative Contrastive Estimation Negative Sampling

1. 基本概念與問題背景 1.1 大規模分類問題 在自然語言處理中&#xff0c;給定上下文 c c c預測單詞 w w w的條件概率為&#xff1a; P ( w ∣ c ) exp ? ( s θ ( w , c ) ) ∑ w ′ ∈ V exp ? ( s θ ( w ′ , c ) ) P(w|c) \frac{\exp(s_\theta(w,c))}{\sum_{w\in V…

Flink SQL Connector Kafka 核心參數全解析與實戰指南

Flink SQL Connector Kafka 是連接Flink SQL與Kafka的核心組件&#xff0c;通過將Kafka主題抽象為表結構&#xff0c;允許用戶使用標準SQL語句完成數據讀寫操作。本文基于Apache Flink官方文檔&#xff08;2.0版本&#xff09;&#xff0c;系統梳理從表定義、參數配置到實戰調優…

vscode內嵌瀏覽器實時預覽vue項目

安裝插件 web Preview 啟動vue項目 打開預覽 ctrl shift p 之后輸入并選擇 Open Web Preview 即可看到預覽窗口&#xff0c;但此時明明我的頁面是有內容的&#xff0c;但是窗口卻空白的。 因為默認訪問端口是3000&#xff0c;我們將其修改為vue項目默認的5173端口即可。 點…

計算機網絡:(四)物理層的基本概念,數據通信的基礎知識,物理層下面的傳輸媒體

計算機網絡&#xff1a;&#xff08;四&#xff09;物理層的基本概念&#xff0c;數據通信的基礎知識&#xff0c;物理層下面的傳輸媒體 前言一、物理層的基本概念1. 什么是物理層2. 物理層的核心使命3. 物理層的四大特性 二、數據通信的基礎知識1. 數據通信系統的基本模型1.1 …

Linux系統性能優化

目錄 Linux系統性能優化 一、性能優化概述 二、性能監控工具 1. 基礎工具 2. 高級工具 三、子系統優化策略 1. CPU優化 2. 內存優化 3. 磁盤I/O優化 4. 網絡優化 四、資源限制優化 1. ulimit 2. cgroups&#xff08;控制組&#xff09; 五、安全與注意事項 六、…

【streamlit streamlit中 顯示 mermaid 流程圖有兩種方式】

streamlit中顯示mermaid 流程圖有兩種方式 mermaind示例 code """ flowchart LRmarkdown["This **is** _Markdown_"]newLines["Line1Line 2Line 3"]markdown --> newLinesmarkdown["This **is** _Markdown_"]newLines[&quo…

Rust調用 DeepSeek API

Rust 實現類似 DeepSeek 的搜索工具 使用 Rust 構建一個高效、高性能的搜索工具需要結合異步 I/O、索引結構和查詢優化。以下是一個簡化實現的框架: 核心組件設計 索引結構 use std::collections::{HashMap, HashSet}; use tantivy::schema::{Schema, TEXT, STORED}; use …

Unity3D仿星露谷物語開發69之動作聲音

1、目標 Player動作時產生的聲音&#xff0c;比如砍倒樹木、砸石頭。 2、修復NPC快速行進的bug&#xff08;與本節無關&#xff09; 修改NPCMovement.cs腳本的MoveToGridPositionRoutine方法。 確保npcCalculatedSpeed的速度不少于最慢速度。 原代碼&#xff1a; 修改后的…

【Node.js 的底層實現機制】從事件驅動到異步 I/O

簡介 Node.js 作為 JavaScript 后端運行環境&#xff0c;其核心優勢在于高并發處理能力和非阻塞 I/O 模型。 特點&#xff1a; 高并發處理&#xff1a;單線程事件循環高效處理大量并發連接I/O 密集型任務&#xff1a;非阻塞 I/O 模型避免線程切換開銷&#xff0c;不適合 CPU…

nginx服務器配置時遇到的一些問題

京東云 CentOS 8.2 64位 Nginx配置文件修改后需要重啟或重載服務的原因以及不重啟的后果&#xff1a; ??工作進程不主動重讀配置??&#xff1a; Nginx采用master-worker多進程架構。master進程讀取配置文件并管理worker進程&#xff0c;worker進程處理實際請求。修改配置…