chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

HarmonyOS實(shí)戰(zhàn):一招搞定保存圖片到相冊(cè)

尤楓 ? 來(lái)源:jf_54996641 ? 2025-06-24 17:04 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

保存圖片功能幾乎是每個(gè)應(yīng)用程序必備的功能之一,當(dāng)用戶遇到喜歡的圖片時(shí)可以保存到手機(jī)相冊(cè)。那么在鴻蒙中保存圖片是否也需要申請(qǐng)用戶存儲(chǔ)權(quán)限以及如何將圖片保存到相冊(cè),本文將詳細(xì)講述怎么保存網(wǎng)絡(luò)圖片,指定布局生成圖片保存至相冊(cè)的功能實(shí)現(xiàn)。

實(shí)現(xiàn)效果

需求分析

一般在 AndroidiOS 上保存圖片都需要申請(qǐng)應(yīng)用存儲(chǔ)權(quán)限,否則將禁止訪問應(yīng)用存儲(chǔ),不能保存圖片到磁盤中。在鴻蒙系統(tǒng)中當(dāng)然也有存儲(chǔ)權(quán)限,但是鴻蒙系統(tǒng)對(duì)于權(quán)限管理十分嚴(yán)格,一般情況下,禁止用戶申請(qǐng)?jiān)L問存儲(chǔ)權(quán)限。但是提供了系統(tǒng)級(jí)別的安全控件,不需要用戶手動(dòng)申請(qǐng)權(quán)限,用于存儲(chǔ)的直接訪問。

  1. 可以使用系統(tǒng)提供的安全控件實(shí)現(xiàn)權(quán)限的直接訪問。
  2. 同時(shí)也提供申請(qǐng)權(quán)限方式進(jìn)行存儲(chǔ)權(quán)限的訪問。
  3. 使用網(wǎng)絡(luò)請(qǐng)求將圖片轉(zhuǎn)成流,然后保存成圖片。

技術(shù)實(shí)現(xiàn)

申請(qǐng)權(quán)限方式

  1. 權(quán)限申請(qǐng)
const permissions: Array< Permissions > = [
  'ohos.permission.WRITE_IMAGEVIDEO'
];
const context = getContext(this) as common.UIAbilityContext;
const atManager = abilityAccessCtrl.createAtManager();
await atManager.requestPermissionsFromUser(context, permissions);
  1. 權(quán)限判斷
PermissionUtil.checkAccessToken(permissions[0]).then((status)= >{
            if (status == abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED) {
              FileSaveManager.getPicture(this.imagePath)
            }else{
              PermissionUtil.openPermissionsInSystemSettings(getContext(this) as common.UIAbilityContext)
            }
   })

安全控件方式

SaveButton({ text: SaveDescription.SAVE_IMAGE, buttonType: ButtonType.Normal })
           .fontColor(Color.White)
           .fontWeight(FontWeight.Medium)
           .onClick(async (event: ClickEvent, result: SaveButtonOnClickResult) = > {
             if (result == SaveButtonOnClickResult.SUCCESS) {
               try {
                 this.saveImage()
               } catch (error) {
                 console.error("error is " + JSON.stringify(error));
               }
             }
           })

可以看出通過(guò)系統(tǒng)安全控件 SaveButton 可以臨時(shí)訪問系統(tǒng)存儲(chǔ),不需要申請(qǐng)任何權(quán)限。更好的保護(hù)用戶隱私安全,這也是鴻蒙官方提倡使用的方式。

網(wǎng)絡(luò)圖片保存

  1. 下載圖片,并將數(shù)據(jù)轉(zhuǎn)化為 ArrayBuffer 類型。
/**
   * 通過(guò)http的request方法從網(wǎng)絡(luò)下載圖片資源
   */
  static async getPicture(url:string) {
    http.createHttp()
      .request(url,
        (error: Error, data: http.HttpResponse) = > {
          if (error) {
            showShortCenterToast("圖片保存失敗")
            return;
          }
          // 判斷網(wǎng)絡(luò)獲取到的資源是否為ArrayBuffer類型
          if (data.result instanceof ArrayBuffer) {
            FileSaveManager.saveImageToPhoto(data.result as ArrayBuffer)
          }
        }
      )
  }
  1. 保存圖片到相冊(cè)
/**
   * 保存ArrayBuffer到圖庫(kù)
   * @param buffer:圖片ArrayBuffer
   * @returns
   */
  static async saveImageToPhoto(buffer: ArrayBuffer | string): Promise< void > {
    const context = getContext() as common.UIAbilityContext; // 獲取getPhotoAccessHelper需要的context
    const helper = photoAccessHelper.getPhotoAccessHelper(context); // 獲取相冊(cè)管理模塊的實(shí)例
    const uri = await helper.createAsset(photoAccessHelper.PhotoType.IMAGE, 'jpg'); // 指定待創(chuàng)建的文件類型、后綴和創(chuàng)建選項(xiàng),創(chuàng)建圖片或視頻資源
    const file = await fs.open(uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
    let r =  await fs.write(file.fd, buffer);
    await fs.close(file.fd);
    showShortCenterToast("圖片保存成功")
  }

指定布局保存

在 Android 或 iOS 中,經(jīng)常會(huì)遇到需要保存指定樣式的布 View 為圖片。Android 中則需要使用 View 的繪制,將布局繪制出來(lái)后,再進(jìn)行保存。但是在鴻蒙中實(shí)現(xiàn)起來(lái)就比較簡(jiǎn)單。

** 1. 將需要保存的 View 布局指定 Id。**

Column() {
    //布局樣式
  } 
.id("root")
  1. 通過(guò) id 將 View 保存成圖片。
componentSnapshot.get("photo", (error: Error, pixmap: image.PixelMap) = > {
                  if (error) {
                    console.log("error: " + JSON.stringify(error))
                    return;
                  }
                  const  packOpts : image.PackingOption = { format:"image/jpeg", quality:98 };
                  imagePackerApi.packing(pixmap, packOpts).then( async (data : ArrayBuffer) = > {
                    FileSaveManager.saveImageToPhoto(data)
                  }).catch((error : BusinessError) = > {
                    console.error('Failed to pack the image. And the error is: ' + error);
                  })
                })

總結(jié)

對(duì)比 Android 或 iOS 來(lái)說(shuō),鴻蒙在實(shí)現(xiàn)功能上相對(duì)簡(jiǎn)單,比較容易上手。但是鴻蒙對(duì)于用戶權(quán)限的獲取要求比較嚴(yán)格,正式上線一般都需要使用系統(tǒng)提供的安全組件訪問應(yīng)用程序的相冊(cè)或存儲(chǔ),日常開發(fā)中需要十分注意,以免影響項(xiàng)目的正常上線。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Android
    +關(guān)注

    關(guān)注

    12

    文章

    3973

    瀏覽量

    130214
  • 鴻蒙系統(tǒng)
    +關(guān)注

    關(guān)注

    183

    文章

    2642

    瀏覽量

    68074
  • HarmonyOS
    +關(guān)注

    關(guān)注

    80

    文章

    2126

    瀏覽量

    32984
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    HarmonyOS 5】鴻蒙應(yīng)用實(shí)現(xiàn)發(fā)票掃描、文檔掃描輸出PDF圖片或者表格的功能

    HarmonyOS 5】鴻蒙應(yīng)用實(shí)現(xiàn)發(fā)票掃描、文檔掃描輸出PDF圖片或者表格的功能 ##鴻蒙開發(fā)能力 ##HarmonyOS SDK應(yīng)用服務(wù)##鴻蒙金融類應(yīng)用 (金融理財(cái)# 、前言
    的頭像 發(fā)表于 07-11 18:16 ?260次閱讀
    【<b class='flag-5'>HarmonyOS</b> 5】鴻蒙應(yīng)用實(shí)現(xiàn)發(fā)票掃描、文檔掃描輸出PDF<b class='flag-5'>圖片</b>或者表格的功能

    如何實(shí)現(xiàn)組件截圖 -- componentSnapshot

    等,文字和圖片都是根據(jù)用戶信息動(dòng)態(tài)生成的,整個(gè)證書在顯示的時(shí)候是通過(guò)Stack組件去完成的,如果只是在程序里顯示那么當(dāng)然很簡(jiǎn)單,但是還需要將其作為圖片保存
    發(fā)表于 06-30 17:45

    ##DevEco Studio##如何讓模擬器里有圖片?【圖片下載法】

    ? API9和API12在模擬器上,有個(gè)巨大的區(qū)別,那就是API9(開發(fā)工具3的版本),他的模擬器里有個(gè)拍照功能(再往前的版本里甚至還有瀏覽器,可以通過(guò)瀏覽器下載圖片),可以通過(guò)拍照功能讓
    發(fā)表于 06-29 22:51

    harmony-utils之PickerUtil,拍照、文件選擇和保存,工具類

    harmony-utils之PickerUtil,拍照、文件選擇和保存,工具類 harmony-utils 簡(jiǎn)介與說(shuō)明 harmony-utils 款功能豐富且極易上手的HarmonyOS工具庫(kù)
    的頭像 發(fā)表于 06-27 16:03 ?114次閱讀

    HarmonyOS實(shí)戰(zhàn)一招解決等待多個(gè)并發(fā)結(jié)果

    前言 年前公司與華為簽訂了合作備忘錄,加入了鴻蒙生態(tài)這個(gè)大家庭。。公司想趕著鴻蒙純血系統(tǒng)上市之前,發(fā)布自己的鴻蒙軟件。開發(fā)鴻蒙NEXT版本軟件就變成了今年的個(gè)工作重心。 ** 本文主要
    的頭像 發(fā)表于 06-09 14:57 ?114次閱讀
    <b class='flag-5'>HarmonyOS</b><b class='flag-5'>實(shí)戰(zhàn)</b>:<b class='flag-5'>一招</b>解決等待多個(gè)并發(fā)結(jié)果

    鴻蒙5開發(fā)寶藏案例分享---多開發(fā)實(shí)例(圖片美化)

    ?【鴻蒙開發(fā)寶藏案例分享】搞定多端適配的圖片美化應(yīng)用開發(fā)思路!? Hey小伙伴們~ 今天在翻鴻蒙文檔時(shí)挖到個(gè)超實(shí)用的大寶藏!原來(lái)官方早就悄悄提供了超多\"
    發(fā)表于 06-03 16:09

    本地服務(wù)器部署怎么選?一招搞定企業(yè)IT成本、性能與安全問題!

    在數(shù)字化時(shí)代,服務(wù)器已經(jīng)成了企業(yè)的“神經(jīng)中樞”。無(wú)論是ERP系統(tǒng)、財(cái)務(wù)數(shù)據(jù)庫(kù)、視頻監(jiān)控、郵件系統(tǒng),還是整套OA辦公系統(tǒng),都要靠它來(lái)穩(wěn)定運(yùn)行。尤其對(duì)很多中小企業(yè)來(lái)說(shuō),面對(duì)“上云”還是“自建”的爭(zhēng)論
    的頭像 發(fā)表于 05-26 13:07 ?176次閱讀
    本地服務(wù)器部署怎么選?<b class='flag-5'>一招</b><b class='flag-5'>搞定</b>企業(yè)IT成本、性能與安全問題!

    移動(dòng)電源EMC整改:認(rèn)證失敗次通過(guò)的實(shí)戰(zhàn)經(jīng)驗(yàn)

    深圳南柯電子|移動(dòng)電源EMC整改:認(rèn)證失敗次通過(guò)的實(shí)戰(zhàn)經(jīng)驗(yàn)
    的頭像 發(fā)表于 05-26 11:25 ?198次閱讀
    移動(dòng)電源EMC整改:認(rèn)證失敗<b class='flag-5'>到</b><b class='flag-5'>一</b>次通過(guò)的<b class='flag-5'>實(shí)戰(zhàn)</b>經(jīng)驗(yàn)

    鴻蒙開發(fā)實(shí)現(xiàn)圖片上傳(上傳用戶頭像)

    應(yīng)用場(chǎng)景: 選擇圖片 1.1. 添加圖片相冊(cè)中 默認(rèn)的相冊(cè)中無(wú)法添加圖片:windows 模擬
    發(fā)表于 05-24 23:09

    基于STM32F103RC的電子相冊(cè)(原理圖、PCB源文件、程序源碼及制作)

    基于STM32F103RC的電子相冊(cè)(原理圖、PCB源文件、程序源碼及制作) 項(xiàng)目示例下載! 純分享帖,需要者可點(diǎn)擊附件免費(fèi)獲取完整資料~~~【免責(zé)聲明】本文系網(wǎng)絡(luò)轉(zhuǎn)載,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請(qǐng)第
    發(fā)表于 05-23 20:40

    爬蟲數(shù)據(jù)獲取實(shí)戰(zhàn)指南:從入門高效采集

    爬蟲數(shù)據(jù)獲取實(shí)戰(zhàn)指南:從入門高效采集 ? ? 在數(shù)字化浪潮中,數(shù)據(jù)已成為驅(qū)動(dòng)商業(yè)增長(zhǎng)的核心引擎。無(wú)論是市場(chǎng)趨勢(shì)洞察、競(jìng)品動(dòng)態(tài)追蹤,還是用戶行為分析,爬蟲技術(shù)都能助你快速捕獲目標(biāo)信息。然而,如何既
    的頭像 發(fā)表于 03-24 14:08 ?613次閱讀

    一招治“浮”! 高精度3D線激光輪廓測(cè)量?jī)x保障螺絲裝配

    浮高產(chǎn)生的系列問題,都將對(duì)機(jī)器的安全運(yùn)行埋下隱患。 各類因素產(chǎn)生的螺絲浮高 GL-8000系列 為您一招治“浮” 螺絲浮高檢測(cè)案例 01 檢測(cè)需求 1.次性掃描檢測(cè)4個(gè)螺絲的高度差 2.精度要求0.03-0.05mm 3.速
    的頭像 發(fā)表于 02-06 18:15 ?566次閱讀
    <b class='flag-5'>一招</b>治“浮”! 高精度3D線激光輪廓測(cè)量?jī)x保障螺絲裝配

    存儲(chǔ)空間告急?NAS擴(kuò)容一招搞定,輕松無(wú)憂!

    和vlog …… 這些點(diǎn)點(diǎn)滴滴 都是我們共同走過(guò)2024年的珍貴憑證 當(dāng)硬盤的進(jìn)度條漸漸變紅 仿佛在向我們展示這年來(lái)滿滿的收獲 但存儲(chǔ)空間緊急告急怎么辦? NAS擴(kuò)容一招搞定 、陣
    的頭像 發(fā)表于 12-24 16:35 ?649次閱讀
    存儲(chǔ)空間告急?NAS擴(kuò)容<b class='flag-5'>一招</b><b class='flag-5'>搞定</b>,輕松無(wú)憂!

    Air780E模組LuatOS開發(fā)實(shí)戰(zhàn) —— 手把手教你搞定數(shù)據(jù)打包解包

    本文要說(shuō)的是低功耗4G模組Air780E的LuatOS開發(fā)實(shí)戰(zhàn),我將手把手教你搞定數(shù)據(jù)打包解包。
    的頭像 發(fā)表于 12-03 11:17 ?625次閱讀
    Air780E模組LuatOS開發(fā)<b class='flag-5'>實(shí)戰(zhàn)</b> —— 手把手教你<b class='flag-5'>搞定</b>數(shù)據(jù)打包解包

    基于ArkTS語(yǔ)言的OpenHarmony APP應(yīng)用開發(fā):圖片處理

    1、程序介紹本案例使用TextArea實(shí)現(xiàn)多文本輸入,使用mediaLibrary實(shí)現(xiàn)在相冊(cè)中獲取圖片,使用image生成pixelMap,使用pixelMap的scale(),crop
    的頭像 發(fā)表于 09-20 08:07 ?1315次閱讀
    基于ArkTS語(yǔ)言的OpenHarmony APP應(yīng)用開發(fā):<b class='flag-5'>圖片</b>處理