最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js前端加載超大圖片(100M以上)實現(xiàn)秒開的最佳解決方案

 更新時間:2023年10月08日 10:32:15   作者:vjmap  
前端加載超大圖片時,一般可以采取圖片壓縮,圖片分割,預加載等措施,而對于幾百M或上G的大圖而言,不管對圖片進行怎么優(yōu)化或加速處理,要實現(xiàn)秒開也是不太可能的事情,所以本文小編將給大家介紹如何對大圖進行分割,在前端進行拼接實現(xiàn)秒開,需要的朋友可以參考下

前言

前端加載超大圖片時,一般可以采取以下措施實現(xiàn)加速:

  • 圖片壓縮:將圖片進行壓縮可以大幅減小圖片的大小,從而縮短加載時間。壓縮圖片時需要注意保持圖片質(zhì)量,以免影響圖片顯示效果。
  • 圖片分割:將超大圖片分割成多個小圖塊進行加載,可以避免一次性加載整個圖片,從而加快加載速度。這種方式需要在前端實現(xiàn)圖片拼接,需要確保拼接后的圖片無縫銜接。
  • CDN 加速:使用 CDN(內(nèi)容分發(fā)網(wǎng)絡)可以將圖片緩存在離用戶更近的節(jié)點上,從而加速圖片加載速度。如果需要加載的圖片是靜態(tài)資源,可以將其存儲在 CDN 上,以便快速訪問。
  • 懶加載:懶加載是一種圖片延遲加載的方式,即當用戶瀏覽到需要加載的圖片時才進行加載,可以有效避免一次性加載大量圖片而導致頁面加載速度緩慢。
  • WebP 格式:使用 WebP 格式可以將圖片大小減小到 JPEG 和 PNG 的一半以下,從而加快圖片加載速度。
  • HTTP/2:使用 HTTP/2 協(xié)議可以并行加載多個圖片,從而加快頁面加載速度。
  • 預加載:預加載是在頁面加載完畢后,提前加載下一步所需要的資源。在圖片加載方面,可以在頁面加載完畢后提前加載下一個需要顯示的圖片,以便用戶快速瀏覽。

而對于幾百M或上G的大圖而言,不管對圖片進行怎么優(yōu)化或加速處理,要實現(xiàn)秒開也是不太可能的事情。而上面介紹的第二條“圖像分割切片”是最佳解決方案。下面介紹下如何對大圖進行分割,在前端進行拼接實現(xiàn)秒開。

圖像切片原理介紹

圖像切片是指將一張大圖分割成若干個小圖的過程,以便于存儲和處理。圖像切片常用于網(wǎng)絡地圖、瓦片地圖、圖像拼接等應用中。

切片原理主要包括以下幾個步驟:

  • 定義切片大?。菏紫刃枰x每個小圖的大小,一般情況下是正方形或矩形。
  • 計算切片數(shù)量:根據(jù)定義的切片大小,計算原始圖像需要被切成多少個小圖。計算公式為:切片數(shù)量 = 原始圖像寬度 / 切片寬度 × 原始圖像高度 / 切片高度。
  • 切割圖像:按照計算出的切片數(shù)量,將原始圖像分割成相應數(shù)量的小圖。可以使用圖像處理庫或自己編寫代碼實現(xiàn)。
  • 存儲切片:將切割后的小圖存儲到磁盤上,可以使用常見的圖片格式,如JPEG、PNG等。
  • 加載切片:在需要顯示切片的地方,根據(jù)需要加載相應的小圖,組合成完整的圖像。

使用圖像切片可以降低處理大圖像的復雜度,同時也能夠提高圖像的加載速度,使得用戶可以更快地查看圖像的細節(jié)。圖像切片廣泛應用于需要處理大圖像的場景,能夠提高圖像處理和顯示效率,同時也能夠提高用戶的體驗。

實現(xiàn)

先上效果圖

上傳打開圖形

先上傳大圖,至后臺進行切片處理, 上傳相關(guān)代碼為:

async onChangeFile(file) {
            try {
                message.info('文件上傳中,請稍候...')
                this.isSelectFile = false;
                this.uploadMapResult = await svc.uploadMap(file.raw);
                if (this.uploadMapResult.error) {
                    message.error('上傳圖形失敗!' + this.uploadMapResult.error)
                    return
                }
                this.form.mapid = this.uploadMapResult.mapid;
                this.form.uploadname = this.uploadMapResult.uploadname;
                this.maptype = this.uploadMapResult.maptype || '';
                this.dialogVisible = true;
            } catch (error) {
                console.error(error);
                message.error('上傳圖形失敗!', error)
            }
        }

如果需要上傳后對圖像進行處理,可以新建一個cmd.txt文件,把處理的命令寫進文件中,然后和圖像一起打包成zip上傳。

如需要把1.jpg,2.jpg拼接成一個新的圖片m1.png再打開,cmd.txt的寫法如下:

join
1.jpg
2.jpg
m1.png
horizontal

再把1.jpg,2.jpg,cmd.txt三個文件打包成zip文件上傳即可

打開圖像相關(guān)代碼

async onOpenMap() {
            try {
                let mapid = this.form.mapid;
                let param = {
                    ...this.uploadMapResult,
                    // 圖名稱
                    mapid: this.form.mapid,
                    // 上傳完返回的fileid
                    fileid: this.uploadMapResult.fileid,
                    // 上傳完返回的文件名
                    uploadname: this.form.uploadname,
                    // 地圖打開方式
                    mapopenway: this.form.openway === "直接打開圖形" ? vjmap.MapOpenWay.Memory : vjmap.MapOpenWay.GeomRender,
                    // 如果要密碼訪問的話,設(shè)置秘鑰值
                    secretKey: this.form.isPasswordProtection ? svc.pwdToSecretKey(this.form.password) : undefined,
                    style: vjmap.openMapDarkStyle(),// div為深色背景顏色時,這里也傳深色背景樣式
                    // 圖像類型設(shè)置地圖左上角坐標和分辨率
                    imageLeft: this.form.imageLeft ? +this.form.imageLeft : undefined,
                    imageTop: this.form.imageTop ? +this.form.imageTop : undefined,
                    imageResolution: this.form.imageResolution ? +this.form.imageResolution : undefined,
                }
                let isVectorStyle = this.form.openway === "存儲后渲染矢量";
                await openMap(param, isVectorStyle);
            } catch (error) {
                console.error(error);
                message.error('打開圖形失敗!', error)
            }
        }

應用案例

應用一 對圖像進行拼接前端查看

原始圖片為

最終效果為:

體驗地址: https://vjmap.com/app/cloud/#/map/t3c93d14ff09?version=v1&mapopenway=GeomRender&vector=false

應用二 對tiff影像進行切片并與CAD圖疊加校準

對tiff影像上傳時可設(shè)置地理坐標范圍。

tiff/tfw, jpg/jpgw坐標文件的格式(6個參數(shù)) 0.030000 0.0000000000 0.0000000000 -0.030000 451510.875000 3358045.000000

以上每行對應的含義:

1 地圖單元中的一個象素在X方向上的X分辨率尺度。 2 平移量。 3 旋轉(zhuǎn)量。 4 地圖單元中的一個象素在Y方向上的Y分辨率尺度的負值。 5 象素1,1(左上方)的X地坐標。 6 象素1,1(左上方)的Y地坐標。

在上傳圖時需要根據(jù)文件中的第一個,第五個和第六個值設(shè)置地圖范圍

或者上傳完后,操作菜單中點擊設(shè)置地圖范圍進行設(shè)置

影像地圖切片完成后,可與CAD圖進行疊加校準。效果如下

體驗地址:https://vjmap.com/demo/#/demo/map/comprehensive/04imagecadmap

以上就是js前端加載超大圖片(100M以上)實現(xiàn)秒開的最佳解決方案的詳細內(nèi)容,更多關(guān)于js前端加載超大圖片的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 一文詳細講下day.js的基礎(chǔ)用法(干貨滿滿)

    一文詳細講下day.js的基礎(chǔ)用法(干貨滿滿)

    這篇文章主要介紹了day.js基礎(chǔ)用法的相關(guān)資料,Day.js是一個簡潔易用的日期處理庫,支持插件擴展,涵蓋日期解析、格式化、獲取、修改、操作、計算和比較等功能,文中給出了詳細的代碼示例,需要的朋友可以參考下
    2025-05-05
  • 小程序?qū)崿F(xiàn)左滑刪除的效果的實例代碼

    小程序?qū)崿F(xiàn)左滑刪除的效果的實例代碼

    這篇文章主要介紹了小程序?qū)崿F(xiàn)左滑刪除的效果,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • 淺談Rx響應式編程

    淺談Rx響應式編程

    在學習Rx編程的過程中,理解Observable這個概念至關(guān)重要,常規(guī)學習過程中,通常需要進行多次碰壁才能逐漸開悟。這個有點像小時候?qū)W騎自行車,必須摔幾次才能掌握一樣。當然如果有辦法能言傳,則可以少走一些彎路,盡快領(lǐng)悟Rx的精妙
    2021-06-06
  • 前端圖片加載錯誤的多種原因分析

    前端圖片加載錯誤的多種原因分析

    在瀏覽網(wǎng)頁或使用應用程序時,圖片加載失敗是一個常見的問題,下面這篇文章主要介紹了前端圖片加載錯誤的多種原因分析的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-03-03
  • JS踩坑實戰(zhàn)之19位數(shù)Number型精度丟失問題詳析

    JS踩坑實戰(zhàn)之19位數(shù)Number型精度丟失問題詳析

    前幾天測試接口功能的時候,發(fā)現(xiàn)了一個奇怪的問題,下面這篇文章主要給大家介紹了關(guān)于JS?Number型精度丟失問題的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-10-10
  • js獲取class的所有元素

    js獲取class的所有元素

    ie不支持getElementsByClassName,所以要自己實現(xiàn)獲取類名為className的所有元素。
    2013-03-03
  • JS實現(xiàn)樣式清新的橫排下拉菜單效果

    JS實現(xiàn)樣式清新的橫排下拉菜單效果

    這篇文章主要介紹了JS實現(xiàn)樣式清新的橫排下拉菜單效果,通過簡單的元素遍歷控制頁面元素的動態(tài)切換效果,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-10-10
  • JavaScript?數(shù)組基本操作全解

    JavaScript?數(shù)組基本操作全解

    今天這篇文章就是來和大家詳細聊聊JavaScript中數(shù)組的基本操作,很多語言都是在數(shù)組這有個分水嶺。聽懂了接下來就很容易,聽不懂就難辦了,大家要認真看喲。希望大家讀完有所收獲,那我辛苦碼字也就值了
    2022-02-02
  • js簡單實現(xiàn)交換Li的值

    js簡單實現(xiàn)交換Li的值

    這篇文章主要介紹的是通過js簡單實現(xiàn)交換Li的值,需要的朋友可以參考下
    2014-05-05
  • JavaScript this使用方法圖解

    JavaScript this使用方法圖解

    這篇文章主要介紹了JavaScript this使用方法圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02

最新評論

宿松县| 卫辉市| 武冈市| 承德县| 循化| 大石桥市| 灌阳县| 荥经县| 武邑县| 屏南县| 商丘市| 克山县| 宣化县| 亳州市| 观塘区| 黄冈市| 敦化市| 都兰县| 方城县| 黄石市| 房产| 盐源县| 平顺县| 岳池县| 盘锦市| 文山县| 二连浩特市| 板桥市| 齐齐哈尔市| 惠东县| 二连浩特市| 和政县| 宁海县| 湖北省| 丘北县| 北京市| 木兰县| 临泉县| 辛集市| 山阴县| 清原|