flutter處理圖片,flutter調(diào)用相冊(cè)

詳解flutter中本地資源圖片的使用

一. flutter中我們想加載本地圖片,需要兩步:

公司主營業(yè)務(wù):網(wǎng)站設(shè)計(jì)、做網(wǎng)站、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)建站是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)建站推出萍鄉(xiāng)免費(fèi)做網(wǎng)站回饋大家。

二. flutter項(xiàng)目中本地圖片加載的原理

在加載圖片時(shí),系統(tǒng)自動(dòng)會(huì)根據(jù)屏幕分辨率優(yōu)先選擇到符合自己分配率的文件夾(2.0x或者3.0x或者4.0x)下去取相對(duì)應(yīng)的圖片,如果當(dāng)前文件夾下沒有,則會(huì)到低一倍的文件夾下去,如果還沒有,則繼續(xù)向更低一倍去取。(比如:iOS 5.5英寸及以上屏幕會(huì)優(yōu)先選擇去3.0x下去取圖片,如果3.0x不存在或者3.0x文件夾下沒有,則去2.0x下?。蝗绻?.0x不存在或者2.0x下沒有,則去1.0x下??;1.0x下再?zèng)]有,則在images文件下取)。

Flutter圖片處理成黑白

借助BlendMode屬性可以處理圖片的色值,有很多混合方式,官方文檔:

這里只說圖片變黑白

方式一,直接設(shè)置image里的color和colorBlendMode屬性:

方式二,通過ShaderMask設(shè)置blendMode:

Flutter_圖片分辨率適配及批量拓展使用

flutter開發(fā)中,圖片的引用是必不可少的,所以為了提高效率和精準(zhǔn)度,我們需要對(duì)不同分辨率的手機(jī)使用相對(duì)應(yīng)的切圖圖片,本章介紹如何進(jìn)行 圖片分辨率適配 和 圖片批量拓展處理 。

flutter中會(huì)首先根據(jù)系統(tǒng)的devicePixelRatio(每一個(gè)邏輯像素包含多少個(gè)原始像素,可以通過MediaQueryData.devicePixelRatio來得到)來找對(duì)應(yīng)倍數(shù)的文件夾下的圖片,如果沒有對(duì)應(yīng)倍數(shù),找最接近的。

所以在flutter項(xiàng)目中,我們需要構(gòu)建對(duì)應(yīng)的倍數(shù)像素文件夾

之后再pubspec.yaml中,配置assets文件后就可以使用了(如使用"assets/images/jay.png",會(huì)自動(dòng)適配該像素下最接近的jay圖片)。

使用flutter-img-sync插件批量化處理,具體操作如下

目前還不能處理gif、webp等格式的圖片,而且如果和上邊介紹的不同像素比適配方案一起使用的話,由于進(jìn)行了精準(zhǔn)定位,所以指定圖片后就不能進(jìn)行像素適配,這是目前還存在的較大問題,所以目前兩者方案只能暫時(shí)取一使用。

flutter圖片內(nèi)存優(yōu)化

按照給定尺寸進(jìn)行圖片的解碼,而不是解碼整個(gè)圖片的尺寸,用來減少內(nèi)存的占用。

官方文檔:

官方說明:

Instructs Flutter to decode the image at the specified dimensions instead of at its native size.

This allows finer control of the size of the image in ImageCache and is generally used to reduce the memory footprint of ImageCache .

The decoded image may still be displayed at sizes other than the cached size provided here.

使用:

三方庫: cached_network_image 限2.5.0之后版本才可用

設(shè)定最大的緩存寬度和高度 this.maxWidthDiskCache 、 this.maxHeightDiskCache

使用:

從相冊(cè)選取圖片,展示時(shí)使用指定尺寸寬高進(jìn)行處理。

使用三方庫:

使用自定義 provider 來指定所需圖片的寬高:

AssetEntityImageProvider 傳入寬高和圖片原圖 AssetEntity 數(shù)據(jù)。

provider 中 key.entity.thumbDataWithSize 方法:

進(jìn)入 entity 中 thumbDataWithSize 方法:

進(jìn)入 _getThumbDataWithId 方法中,

進(jìn)入getThumb:

調(diào)用iOS原生的獲取圖片方法,

進(jìn)入 getThumbWithId 方法,

原生實(shí)現(xiàn)獲取置頂寬高縮略圖方法實(shí)現(xiàn):

使用 iOS 原生類 PHImageManager 的

來獲取縮略圖。

網(wǎng)站標(biāo)題:flutter處理圖片,flutter調(diào)用相冊(cè)
標(biāo)題鏈接:http://muchs.cn/article42/phichc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、移動(dòng)網(wǎng)站建設(shè)、ChatGPT、網(wǎng)頁設(shè)計(jì)公司網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)