uniapp和原生交互實現(xiàn)圖片邊緣拉伸效果

因為現(xiàn)在手機屏幕的多樣化崭闲,導致我們的圖片會存在一些拉縮變形的情況项戴,所以這里我針對這塊進行了一個方案的解決,如果大家還有更好的瑟啃,感謝大家分享一下。(特別說明:我這里用的是本地圖片揩尸,網(wǎng)絡(luò)圖片我沒有研究過蛹屿,所以如果您的是網(wǎng)絡(luò)圖用不了,麻煩您自己自行解決哈Q矣堋)

我這里采用的方案是使用原生對圖片進行處理错负,然后同步回傳給uniapp進行展示(異步也可以)坟瓢,這種方案本人親測有效(公司項目已經(jīng)在使用),效果也還是蠻不錯的犹撒,如果需要更高端更有效的折联,大家可以自行研究!

在開始講解方案前识颊,大家可以先去看我之前寫的uniapp和原生交互數(shù)據(jù)文章诚镰,下面是文章地址:

iOS和uniapp數(shù)據(jù)交互:https://blog.csdn.net/yun199466/article/details/106269636

Android和uniapp數(shù)據(jù)交互:https://blog.csdn.net/yun199466/article/details/106269779

我這里使用的同步從原生回傳圖片的,大家也可以用異步回傳圖片祥款,這個看個人需求清笨。

好了,廢話不多說刃跛,開始講解源碼和流程了?侔!奠伪!

一跌帐、需要先獲取到展示圖片容器的寬高(注意:這個寬高是要傳到原生進行使用的,別忘記了)

//獲取素材版本號(這個版本號是為了在后期修改绊率、新增圖片后谨敛,可以重新進行生成而設(shè)定的)

? ? ? ? ? ? let native_image_base_key = "image_V1";

//獲取本地存儲的base64圖片

let localBaseData = uni.getStorageSync(native_image_base_key);

? ? ? ? ? ??//查找圖片容器元素

let that = this;

const query = uni.createSelectorQuery().in(this);

query.select('.你的容器的樣式名稱').boundingClientRect(data => {

let containerW = data.width;//容器的寬

let?containerH = data.height;//容器的高

? ? ? ? ? ? ? ?//保存圖片時的key值,這個看個人怎么定義滤否,注意多個圖片的時候不要設(shè)置一樣的脸狸,防止圖片被覆蓋

? ? ? ? ? ? ? ? let key = "my_img";

//優(yōu)先判斷本地是否存儲過了base64編碼,存儲了就拿本地藐俺,否則傳到原生進行壓縮處理

//同時判斷是否存在指定版本素材的圖片(考慮后期可能會更換圖片)

if (localBaseData != "" && localBaseData != null && localBaseData != undefined &&

localBaseData[key] != null && localBaseData[key] != "" && localBaseData[key] != undefined) {

console.log("取本地的Base64圖片");

var base64Data = localBaseData[key];

} else {

//將圖片傳到原生壓縮到指定寬高后回傳base64回來進行替換展示

let baseImage = NativePlugin.NativeImageSplitter("圖片名或者圖片路徑(這里傳給原生是為了原生項目可以拿到本地圖片)",containerW,containerH);

if (baseImage != null && baseImage != undefined){

if (Array.isArray(baseImage) && baseImage.length > 0) {

//處理iOS端返回的數(shù)據(jù)

that.nativaBaseData[key] = baseImage[0];

//TODO:記得同時更新圖片容器的圖片顯示

} else {

//處理Android返回的數(shù)據(jù)

if (baseImage != "") {

that.nativaBaseData[key] = baseImage;

//TODO:記得同時更新圖片容器的圖片顯示

}

}

}

uni.setStorage({key:native_image_base_key,data:this.nativaBaseData,success() {

console.log("保存本地base64成功");

}});

}).exec();

nativaBaseData : 這是我定義的一個全局對象炊甲,用來存儲Base64編碼圖片的。格式{"my_img":"處理過的base64編碼圖片字符串"}

二欲芹、原生將base64編碼圖片傳到uniapp代碼

(1)iOS端回傳代碼

(2)Android端回傳代碼

注意點:

1卿啡、本地圖片最好是叫美工設(shè)計成有邊緣拉伸效果的;

2菱父、圖片回傳可使用同步颈娜、異步都可以,這個看個人需求而定浙宜,這里我只是才有同步來講解下思路官辽;

三、原生兩端的代碼

(1)iOS端原生代碼

https://download.csdn.net/download/yun199466/16744224

(2)Android端原生代碼

https://download.csdn.net/download/yun199466/16744284

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載粟瞬,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者同仆。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市裙品,隨后出現(xiàn)的幾起案子俗批,更是在濱河造成了極大的恐慌俗或,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扶镀,死亡現(xiàn)場離奇詭異蕴侣,居然都是意外死亡,警方通過查閱死者的電腦和手機臭觉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門昆雀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蝠筑,你說我怎么就攤上這事狞膘。” “怎么了什乙?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵挽封,是天一觀的道長。 經(jīng)常有香客問我臣镣,道長辅愿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任忆某,我火速辦了婚禮点待,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘弃舒。我一直安慰自己癞埠,他們只是感情好,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布聋呢。 她就那樣靜靜地躺著苗踪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪削锰。 梳的紋絲不亂的頭發(fā)上通铲,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天,我揣著相機與錄音器贩,去河邊找鬼测暗。 笑死,一個胖子當著我的面吹牛磨澡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播质和,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼稳摄,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了饲宿?” 一聲冷哼從身側(cè)響起厦酬,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤胆描,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后仗阅,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體昌讲,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年减噪,在試婚紗的時候發(fā)現(xiàn)自己被綠了短绸。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡筹裕,死狀恐怖醋闭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情朝卒,我是刑警寧澤证逻,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站抗斤,受9級特大地震影響囚企,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜瑞眼,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一龙宏、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧负拟,春花似錦烦衣、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至厨姚,卻和暖如春衅澈,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背谬墙。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工今布, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人拭抬。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓部默,卻偏偏與公主長得像,于是被迫代替她去往敵國和親造虎。 傳聞我的和親對象是個殘疾皇子傅蹂,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容

  • uni-app的基本使用 課程介紹: 基礎(chǔ)部分: 環(huán)境搭建 頁面外觀配置 數(shù)據(jù)綁定 uni-app的生命周期 組件...
    __Mr_Xie__閱讀 1,460評論 0 1
  • uni-app的基本使用 課程介紹: 基礎(chǔ)部分: 環(huán)境搭建 頁面外觀配置 數(shù)據(jù)綁定 uni-app的生命周期 組件...
    綠茵場上的碼者閱讀 44,519評論 1 21
  • 一、在uniapp項目添加一個類,專門用來處理和原生進行交互使用份蝴; import Vue from 'vue'; ...
    帥帥滴小胖次閱讀 11,152評論 0 2
  • uni-app的基本使用 課程介紹: 基礎(chǔ)部分: 環(huán)境搭建 頁面外觀配置 數(shù)據(jù)綁定 uni-app的生命周期 組件...
    flyjar閱讀 753評論 0 2
  • uni-app的基本使用 課程介紹: 基礎(chǔ)部分: 環(huán)境搭建 頁面外觀配置 數(shù)據(jù)綁定 uni-app的生命周期 組件...
    Neo_duan閱讀 2,131評論 1 1