精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何轉換圖片格式(使用packing將pixelMap重新打包為其他格式)

開發 前端
本例即為大家介紹如何完成圖片格式轉換。本例最終實現效果為:將工程資源文件中Png格式的圖片轉換為Jpg格式,并保存在設備中。由于本例不涉及UI講解,所以不在此提供UI效果。

想了解更多關于開源的內容,請訪問:

51CTO 開源基礎軟件社區

https://ost.51cto.com

如何轉換圖片格式

場景說明

當我們獲取到圖片或者視頻的縮略圖后,返回的是pixelMap,此時有開發者會有疑問如何將pixelMap轉換成jpeg等其他格式的圖片,其實使用image類中的packing方法就可以將pixelMap重新打包成新的格式(當前只支持jpeg,webp格式),再使用文件管理就可以將圖片存入到應用的沙箱路徑。本例即為大家介紹如何完成圖片格式轉換。

運行環境

本例基于以下環境開發,開發者也可以基于其他適配的版本進行開發:

  • IDE: DevEco Studio 4.0 Beta1
  • SDK: Ohos_sdk_public 4.0.7.5 (API Version 10 Beta1)

效果呈現

本例最終實現效果為:將工程資源文件中png格式的圖片轉換為jpg格式,并保存在設備中。由于本例不涉及UI講解,所以不在此提供UI效果。

實現思路

本例中完成圖片格式轉換包含三個關鍵步驟,相關步驟及實現方案如下:

  • 獲取到要轉換圖片的PixelMap數據:使用image的createPixelMap方法獲取到圖片的PixelMap數據。
  • 將圖片的PixelMap重新打包轉換為其他格式:使用packing方法進行打包,打包時可以設置格式、壓縮質量等。
  • 將重新打包好的圖片保存到應用目錄:使用圖庫選擇器photoViewPicker的相關功能以及file讀寫操作完成圖片的保存。

開發步驟

由于本例重點講解圖片格式的轉換,所以開發步驟會著重講解相關實現,不相關的內容不做介紹,全量代碼可參考完整代碼章節。

獲取要轉換圖片的PixelMap數據。
先通過上下文context獲取到資源管理器resourceManager,然后通過資源管理器獲取到圖片數據,然后獲取圖片的ArrayBuffer,最后通過ArrayBuffer創建imageSource,獲取到pixelMap,完成圖片解碼。
具體代碼如下:

import common from '@ohos.app.ability.common';

@Entry
@Component
struct Index {
  ...
  context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext
  ...

  async getPixelMap(){
    // 獲取resourceManager資源管理
    const resourceMgr = this.context.resourceManager
    // 獲取rawfile文件夾下imagetransfer.PNG的ArrayBuffer
    const fileData = await resourceMgr.getMediaContent($r('app.media.imagetransfer'))
    const buffer = fileData.buffer
    // 創建imageSource
    const imageSource = image.createImageSource(buffer)
    // 獲取PixelMap
    const pixelMap = await imageSource.createPixelMap()
    return pixelMap
  }
  ...
}

將圖片的PixelMap重新打包轉換為其他格式。
先通過createImagePacker構建ImagePacker實例,再通過該實例調用packing方法進行打包,打包時傳入獲取到的PixelMap數據及重新打包的圖片格式等相關配置信息。
具體代碼如下:

...
@State src:PixelMap = undefined
...
// 頁面加載前將獲取到的圖片PixelMap數據賦值給狀態變量src
async aboutToAppear() {
  this.src = await this.getPixelMap()
}
...
// 創建ImagePacker實例
let imagePackerApi = image.createImagePacker();
let options = {
  // 設置重新打包的圖片格式
  format: 'image/jpeg',
  quality: 98
};
// 打包時傳入圖片的PixelMap:src和圖片打包選項:option,異步獲取打包后的數據data
imagePackerApi.packing(this.src, options).then((data) => {
  console.log('Succeeded in packing the image.');
  }).catch(error => {
  console.log('Failed to pack the image..');
  ....
})

將重新打包好的圖片保存到應用目錄。
使用圖庫選擇器photoViewPicker保存文件,保存時可以在保存界面選擇保存路徑并設定文件名。此時保存的是空文件,然后再使用file將重新打包的圖片數據寫入保存的文件中,保存完成后我們便可以在保存路徑下找到轉換格式后的圖片文件了。
具體代碼如下:

...
// 打包時傳入圖片的pixelmap:src和圖片打包選項:option,異步獲取打包后的數據data
imagePackerApi.packing(this.src, options).then((data) => {
  // 創建文件管理器保存選項實例
  let photoSaveOptions = new picker.PhotoSaveOptions();
  // 保存文件名(可選)
  photoSaveOptions.newFileNames = ["imageTransfer.jpg"];
  let photoViewPicker = new picker.PhotoViewPicker();

  // 保存時傳入保存的文件名:photoSaveOptions
  photoViewPicker.save(photoSaveOptions)
    .then((photoSaveResult) => {
      setTimeout(() => {
        // 獲取到保存文件的URI,后續進行文件讀取等操作
        this.uri = photoSaveResult[0];

        fs.open(this.uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE).then((file) => {
          // 將圖片打包數據data寫入保存的文件
          fs.write(file.fd, data).then((number) => {
            console.info("foo imagetest: write data to file succeed and size is:" + number);
          }).catch((err) => {
            console.info("foo imagetest: write data to file failed with error:" + err);
          });
          // 完成文件寫入后,關閉文件
          fs.close(file, (err) => {
            if (err) {
              console.info("close file failed with error message: " + err.message + ", error code: " + err.code);
            } else {
              console.info("close file success");
            }
          });
        }).catch((err) => {
          console.info("foo open file failed with error message: " + err.message + ", error code: " + err.code);
        });

      }, 200)

    })
    .catch((err) => {
      console.error('PhotoViewPicker.save failed with err: ' + err);
    })
})
...

完整代碼

本例完整代碼如下:

import image from '@ohos.multimedia.image';
import fs from '@ohos.file.fs';
import common from '@ohos.app.ability.common';
import picker from '@ohos.file.picker';

@Entry
@Component
struct Index {
  @State src:PixelMap = undefined
  context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext
  private  uri = null
  // 頁面加載前將獲取到的圖片PixelMap數據賦值給狀態變量src
  async aboutToAppear() {
    this.src = await this.getPixelMap()
  }

  async getPixelMap(){
    // 獲取resourceManager資源管理
    const resourceMgr = this.context.resourceManager
    // 獲取rawfile文件夾下httpimage.PNG的ArrayBuffer
    const fileData = await resourceMgr.getMediaContent($r('app.media.contact6'))
    const buffer = fileData.buffer
    // 創建imageSource
    const imageSource = image.createImageSource(buffer)
    // 創建PixelMap
    const pixelMap = await imageSource.createPixelMap()
    return pixelMap
    console.log('pixelMap  ' + JSON.stringify(this.src.getPixelBytesNumber()))
  }

  build() {
    Row() {
      Column() {
        Button('轉換圖片格式:png->jpeg')
          .onClick(() => {
            // 創建ImagePacker實例
            let imagePackerApi = image.createImagePacker();
            // 設置重新打包的圖片格式,及圖片壓縮質量
            let options = {
              format: 'image/jpeg',
              quality: 98
            };
            // 打包時傳入圖片的pixelmap:src和圖片打包選項:option,異步獲取打包后的數據data
            imagePackerApi.packing(this.src, options).then((data) => {
              // 創建文件管理器保存選項實例
              let photoSaveOptions = new picker.PhotoSaveOptions();
              // 保存文件名(可選)
              photoSaveOptions.newFileNames = ["imageTransfer.jpg"];
              let photoViewPicker = new picker.PhotoViewPicker();
              // 保存時傳入保存的文件名:photoSaveOptions
              photoViewPicker.save(photoSaveOptions)
                .then((photoSaveResult) => {
                  console.log('foo start')
                  setTimeout(() => {
                    // 獲取到圖片的URI后進行文件讀取等操作
                    this.uri = photoSaveResult[0];
                    fs.open(this.uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE).then((file) => {
                      // 將圖片打包數據data寫入保存的文件
                      fs.write(file.fd, data).then((number) => {
                        console.info("foo imagetest: write data to file succeed and size is:" + number);
                      }).catch((err) => {
                        console.info("foo imagetest: write data to file failed with error:" + err);
                      });
                      // 完成文件寫入后,關閉文件
                      fs.close(file, (err) => {
                        if (err) {
                          console.info("close file failed with error message: " + err.message + ", error code: " + err.code);
                        } else {
                          console.info("close file success");
                        }
                      });
                    }).catch((err) => {
                      console.info("foo open file failed with error message: " + err.message + ", error code: " + err.code);
                    });
                  }, 200)
                })
                .catch((err) => {
                  console.error('PhotoViewPicker.save failed with err: ' + err);
                })
            })
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}

想了解更多關于開源的內容,請訪問:

51CTO 開源基礎軟件社區

https://ost.51cto.com

責任編輯:jianghua 來源: 51CTO 開源基礎軟件社區
相關推薦

2022-05-19 09:48:07

webp瀏覽器

2011-09-01 18:29:10

Ubuntu

2009-07-31 14:09:41

c#時間格式轉換

2025-07-02 00:05:00

2019-07-30 10:51:45

Markdown格式化文檔Linux

2022-11-01 16:20:56

Java圖像文件圖像文件類型

2023-08-25 14:47:56

TransFLACFLAC

2009-12-24 15:59:46

WPF圖像格式

2015-11-04 11:17:10

移動開發圖片格式

2010-01-05 14:49:03

JSON格式

2022-07-02 15:06:06

Pandoc文件Markdown

2020-08-20 09:30:26

Python音頻文本格式

2021-10-15 09:00:02

Python日期轉換Python基礎

2024-12-13 09:42:38

javascripmatch方法

2011-09-02 19:30:47

2009-11-26 18:36:52

PHP函數sprint

2023-11-22 08:21:25

Android開發場景

2017-06-06 13:10:25

Windows 10Windows音樂格式轉換成

2024-09-09 18:17:25

PHP編程JSON格式

2018-08-15 15:23:48

視頻
點贊
收藏

51CTO技術棧公眾號

极品尤物一区二区三区| 欧美极品美女视频网站在线观看免费| 色综合天天色综合| 尤物网在线观看| 国产一区二区中文字幕| 欧美韩日一区二区| 免费在线观看污| 96视频在线观看欧美| 亚洲一二三区在线观看| 日韩欧美视频一区二区| 午夜精品久久久久久久96蜜桃| 亚洲一级在线| 欧美成aaa人片免费看| avtt香蕉久久| 精品国产一区二区三区性色av| 欧美日韩亚洲激情| av磁力番号网| 黄视频在线观看免费| 国产精品性做久久久久久| 日韩av免费一区| 国产无码精品在线播放| 青青草国产成人a∨下载安卓| 日韩无一区二区| 成人亚洲精品777777大片| 成人三级小说| 成人免费在线播放视频| 久久综合九九| 亚洲经典一区二区三区| 另类欧美日韩国产在线| 日本国产一区二区三区| 久久亚洲成人av| 婷婷丁香综合| 在线视频中文亚洲| 亚洲激情视频小说| 欧美人妖视频| 亚洲成人黄色在线观看| 中文字幕一区二区三区四| 青青热久免费精品视频在线18| 五月天网站亚洲| 亚洲精品天堂成人片av在线播放| 午夜视频成人| 国产欧美日产一区| 欧美日韩另类综合| 五月婷婷在线播放| 成人免费视频app| 亚洲影院色在线观看免费| 亚洲一区中文字幕在线| 日韩二区在线观看| 国产精品久久久久久久久久久新郎 | 久草综合在线| 欧美在线观看一区| 又色又爽又高潮免费视频国产| 欧美13videosex性极品| 亚洲成a人片综合在线| 欧美一区二区视频观看视频| 九九九久久国产免费| 欧美自拍偷拍网| 视频精品在线观看| 亚洲精品一区二区网址| 一区二区不卡免费视频| 伊人久久大香线蕉无限次| 日韩av综合网| 麻豆av免费观看| 国产欧美日韩精品一区二区免费| 亚洲人成网站999久久久综合| 精品人妻互换一区二区三区| 国产一区二区在线| 中文字幕亚洲欧美日韩在线不卡| 九一在线免费观看| 国产精品99一区二区三区| xxx成人少妇69| 成人免费毛片东京热| 一本一道久久a久久精品蜜桃| 久久伊人精品天天| 免费视频一二三区| 亚洲男女自偷自拍| 国产精品热视频| 国产在成人精品线拍偷自揄拍| 韩国av一区二区三区在线观看| 91黄在线观看| 日本午夜在线| 国产精品三级av| 黄色污污在线观看| 99精品999| 美女羞羞视频在线观看| 亚洲麻豆国产自偷在线| 国产3p露脸普通话对白| 最新欧美电影| 91精品国产色综合久久久蜜香臀| 国产在线a视频| 亚洲瘦老头同性70tv| 在线亚洲男人天堂| 精国产品一区二区三区a片| 亚洲综合丁香| 91人人爽人人爽人人精88v| 日韩在线视频第一页| 久久精品亚洲麻豆av一区二区| 亚洲精品二区| heyzo中文字幕在线| 一本到一区二区三区| 亚洲va综合va国产va中文| 国产精品xxxav免费视频| 亚洲人成在线播放| 亚洲国产成人精品综合99| 亚洲一区免费| 91九色在线视频| 天堂av在线7| 一区二区在线观看不卡| 色综合天天色综合| 久久久伦理片| 美女精品视频一区| 国产suv精品一区二区33| 国产成人自拍在线| 亚洲国产欧美不卡在线观看 | 国产日产欧美一区| 免费高清一区二区三区| 91成人精品观看| 亚洲美女视频网| 国产一级特黄视频| 国产综合色在线| 日韩欧美精品在线不卡| 天堂中文最新版在线中文| 日韩视频123| 最新日韩免费视频| 久久国产毛片| 国产乱人伦精品一区二区| www.久久ai| 欧美人妖巨大在线| 亚洲一区二区自偷自拍 | 国产精品久久久久婷婷二区次| 黄色一级视频片| 香蕉成人app| 久久好看免费视频| 中文字幕精品在线观看| 2023国产精品| 久久精品国产精品亚洲色婷婷| 一区二区三区四区高清视频 | 亚洲色偷偷综合亚洲av伊人| 日韩电影在线一区| 欧美日韩一区二| 在线观看网站免费入口在线观看国内| 精品日产卡一卡二卡麻豆| 极品久久久久久| 寂寞少妇一区二区三区| 一区二区三区电影| 国产原创一区| 日韩中文字幕在线视频| 伊人网视频在线| 国产精品美女久久久久久2018| 日韩一级理论片| 国产欧美日韩精品一区二区免费| 国产成人福利网站| 激情在线视频| 欧美三级在线看| 毛片视频免费播放| 韩国毛片一区二区三区| 欧洲精品视频在线| 午夜精品在线| 孩xxxx性bbbb欧美| 天天摸天天干天天操| 狠狠做深爱婷婷久久综合一区 | 2019亚洲日韩新视频| 亚洲欧洲国产综合| 一本久久a久久免费精品不卡| 鲁丝一区二区三区| 久久se精品一区二区| 波多野结衣三级在线| 韩国三级成人在线| 久久久噜久噜久久综合| 偷拍自拍在线| 欧美特级限制片免费在线观看| 日韩av毛片在线观看| 国产精品一级在线| 玩弄中年熟妇正在播放| 精品一区av| 亚洲xxxxx性| 国产免费拔擦拔擦8x高清在线人| 亚洲另类激情图| 在线中文字幕网站| 亚洲制服丝袜av| 国产男女猛烈无遮挡a片漫画 | 免费不卡的av| 久久久天天操| 中文字幕在线亚洲精品| 成人资源在线| 国产aaa精品| 性xxxfreexxxx性欧美| 亚洲高清久久久久久| 免费黄色小视频在线观看| 日韩一区欧美小说| 国产精品伦子伦| 久久99精品国产麻豆婷婷洗澡| 欧美乱做爰xxxⅹ久久久| 色爱综合av| 91久久精品美女高潮| 九色porny自拍视频在线播放| 一区二区三区回区在观看免费视频 | 一道本一区二区| 亚洲精品国产精品国自产| 91精品丝袜国产高跟在线| 国产成人精品电影| 欧美黄色视屏| 中文字幕av一区| 日韩一区二区三区不卡| 欧美美女视频在线观看| 欧美特黄aaaaaa| 亚洲精品视频在线看| www.黄色在线| 99久久精品一区二区| 婷婷中文字幕在线观看| 丝袜亚洲精品中文字幕一区| 欧美无砖专区免费| 亚洲国产精品久久久天堂| 秋霞久久久久久一区二区| 国产日韩三级| 亚洲尤物视频网| 成人在线观看免费播放| 97人人模人人爽人人喊中文字| 岛国中文字幕在线| 日韩在线观看免费全集电视剧网站| 性感美女福利视频| 日韩精品自拍偷拍| 91福利免费视频| 日本电影亚洲天堂一区| 国产亚洲欧美精品久久久www | 国产原创一区| 日韩av片免费在线观看| 日本乱码一区二区三区不卡| 欧美另类高清videos| 男人的天堂在线视频免费观看 | 精品综合久久久| 91综合精品国产丝袜长腿久久| 国产区亚洲区欧美区| 国模一区二区| 日韩免费不卡av| 亚洲人成午夜免电影费观看| 97精品国产97久久久久久春色| 久久久123| 欧美成人精品在线观看| a毛片在线观看| 欧美成人在线网站| av网站免费在线观看| 久久精品国产亚洲精品2020| 欧美成人精品一区二区男人看| 中文字幕免费精品一区高清| 国产一级片在线| 亚洲精品综合久久中文字幕| 人操人视频在线观看| 亚洲毛片在线观看.| 精品三级久久久久久久电影聊斋| 亚洲欧美日韩在线一区| 精品欧美不卡一区二区在线观看| 亚洲人成人99网站| 第三区美女视频在线| 中文字幕亚洲一区二区三区五十路| 国产三级在线观看| 国产性色av一区二区| av在线女优影院| 久久精品国产一区二区电影| av软件在线观看| 欧美激情第三页| 国产中文在线播放| 国产91在线播放精品91| 久久久加勒比| 亚洲自拍高清视频网站| 欧美a大片欧美片| 欧美日韩综合网| 青青一区二区三区| 精品一区二区三区毛片| 亚洲无线一线二线三线区别av| 少妇无码av无码专区在线观看| 美日韩精品视频| 欧美美女一级片| 懂色av一区二区三区免费看| 内射中出日韩无国产剧情| 国产精品视频在线看| 五月婷婷一区二区| 一本色道久久综合亚洲91 | 看片网站欧美日韩| 4438x全国最大成人| 97aⅴ精品视频一二三区| 五月婷婷欧美激情| 一区二区三区不卡视频| 中文字幕av影院| 制服丝袜一区二区三区| 手机av在线免费观看| 中文国产成人精品| caoporn-草棚在线视频最| 国产精品视频免费在线| 中文字幕日韩高清在线| 日韩精品在在线一区二区中文 | 久久久久久久久久久免费视频| 蜜臀99久久精品久久久久久软件| 风韵丰满熟妇啪啪区老熟熟女| 久久久欧美精品sm网站| 91精品国产高清一区二区三蜜臀| 色综合久久中文字幕| 国产美女主播在线观看| 亚洲色图综合久久| 国产偷倩在线播放| 国产精品亚洲片夜色在线| 欧美理伦片在线播放| 国产福利片一区二区| 久久国产成人| 特级特黄刘亦菲aaa级| 国产精品人成在线观看免费| 日韩免费观看一区二区| 欧美二区三区91| 黄色大片在线看| 韩国精品美女www爽爽爽视频| 成人日韩视频| 婷婷五月色综合| 亚洲一区日韩在线| 国产a级片视频| 亚洲欧洲99久久| 国产精品尤物视频| 亚洲老头同性xxxxx| 77thz桃花论族在线观看| 亚洲精品免费网站| 久久美女精品| 性欧美极品xxxx欧美一区二区| 成人av网在线| 黄色一级视频免费观看| 在线电影国产精品| 91大神在线网站| 国产激情久久久| 色综合综合色| 可以在线看的黄色网址| 成人18视频在线播放| 国产精品成人av久久| 日韩精品一区在线观看| 在线播放免费av| 97人人干人人| 欧美aⅴ99久久黑人专区| 日韩av加勒比| 亚洲蜜臀av乱码久久精品| 91肉色超薄丝袜脚交一区二区| 在线一区二区日韩| 欧美成人app| 日日噜噜噜噜夜夜爽亚洲精品| 久久福利精品| 一区二区三区伦理片| 在线观看不卡一区| 97电影在线| 国产日韩欧美视频在线| 99精品视频在线| 天堂网成人在线| 亚洲免费观看高清完整版在线观看熊| 国产精品久久久久久免费| 欧美成人在线免费视频| 中文字幕久久精品一区二区 | 日韩欧美一级片| 欧美激情成人动漫| 精品在线不卡| 久久精选视频| 长河落日免费高清观看| 欧美另类z0zxhd电影| 91cn在线观看| 国产原创精品| 久久一区二区三区四区五区| 亚洲精品91在线| 9191成人精品久久| 欧美xxxx黑人又粗又长| 狠狠干一区二区| 老司机午夜精品视频在线观看| 国产又粗又猛又爽又黄av | 少妇av在线播放| 欧洲成人免费aa| 97精品视频| 成年女人免费视频| 色综合天天综合网国产成人综合天| 国产小视频免费在线网址| 国产日韩中文字幕在线| 欧美日韩国产一区精品一区| 无码人妻精品一区二区三区温州| 欧美影片第一页| 日本大胆在线观看| 欧美日韩高清免费| 精久久久久久久久久久| 日本一二三区视频| 最近2019好看的中文字幕免费| 一区二区日韩| 簧片在线免费看| 亚洲愉拍自拍另类高清精品| 日本一本草久在线中文| 91久久国产婷婷一区二区| 免费视频一区| 在线观看成人毛片| 亚洲色图美腿丝袜| 亚洲2区在线| 91蝌蚪视频在线观看| 亚洲午夜影视影院在线观看| 国产一级免费在线观看| 国产v亚洲v天堂无码| 日本成人在线视频网站| 国产精品theporn动漫| 日韩在线视频网站| 日韩av黄色在线| 亚洲综合伊人久久| 91传媒视频在线播放|