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

編輯圖片—OpenHarmony

系統 OpenHarmony
本例即為大家介紹如何獲取圖片的pixelMap數據,并通過pixelMap對圖片進行常見的編輯操作。

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

51CTO 開源基礎軟件社區

https://ost.51cto.com

編輯圖片

場景說明

圖片編輯是在應用中經常用到的功能,比如相機拍完照片后可以對照片進行編輯;截圖后可以對截圖進行編輯;可以對圖庫中的圖片進行編輯等。本例即為大家介紹如何獲取圖片的pixelMap數據,并通過pixelMap對圖片進行常見的編輯操作。

效果呈現

本例最終效果如下:

編輯圖片(OpenHarmony)-開源基礎軟件社區

運行環境

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

  • IDE: DevEco Studio 3.1 Release
  • SDK: Ohos_sdk_public 3.2.12.5(API Version 9 Release)

實現思路

本例中展示的是對資源文件中的圖片進行編輯,編輯操作主要分為以下三步:

  1. 對圖片解碼,獲取到pixelMap:先通過上下文context獲取到資源管理器resourceManager,然后通過資源管理器獲取到圖片數據,然后獲取圖片的ArrayBuffer,最后通過ArrayBuffer創建imageSource,獲取到pixelMap,完成圖片解碼。
  2. 編輯pixelMap:獲取到pixelMap后就可以針對pixelMap進行裁剪、縮放、偏移、旋轉、翻轉、調節透明度等操作。
  3. 將編輯好的pixelMap渲染顯示出來:完成對pixelMap的編輯后,可以通過Image組件將編輯后的pixelMap渲染顯示出來。

開發步驟

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

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

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

2、編輯pixelMap。
分別通過以下方法對pixelMap進行裁剪、縮放、偏移、旋轉、翻轉、調節透明度等操作:crop、scale、translate、rotate、flip、opacity。
具體代碼如下:

// 對pixelMap進行裁剪
async crop_image(){
  let pixelMap = await this.get_pixelmap()
  pixelMap.crop({x:0,y:0,size:{height:300,width:300}})
  this.imagePixelMap = pixelMap
}
// 對pixelMap進行縮放
async scale_image(){
  let pixelMap = await this.get_pixelmap()
  pixelMap.scale(0.5,0.5)
  this.imagePixelMap = pixelMap
}
// 對pixelMap進行偏移
async translate_image(){
  let pixelMap = await this.get_pixelmap()
  pixelMap.translate(100,100);
  this.imagePixelMap = pixelMap
}
// 對pixelMap進行旋轉
async rotate_image(){
  let pixelMap = await this.get_pixelmap()
  pixelMap.rotate(90);
  this.imagePixelMap = pixelMap
}
// 對pixelMap進行翻轉
async flip_image(){
  let pixelMap = await this.get_pixelmap()
  pixelMap.flip(false, true);
  this.imagePixelMap = pixelMap
}
// 對pixelMap進行透明度調整
async opacity_image(){
  let pixelMap = await this.get_pixelmap()
  pixelMap.opacity(0.5);
  this.imagePixelMap = pixelMap
}

3、通過Image組件將編輯后的pixelMap渲染顯示出來。
第2步中將編輯好的pixelMap傳遞給狀態變量imagePixelMap,本步中直接將imagePixelMap傳入Image組件進行渲染顯示。
具體代碼如下:

if(!this.edit){
  Row(){
    Image($r('app.media.httpimage')).objectFit(ImageFit.None)
  }.width('100%').height('50%').backgroundColor('#F0F0F0')
}else{
  Row(){
    // 將編輯好的pixelMap傳遞給狀態變量imagePixelMap后,通過Image組件進行渲染
    Image(this.imagePixelMap).objectFit(ImageFit.None)
  }.width('100%').height('50%').backgroundColor('#F0F0F0')
}

完整代碼

本例完整代碼如下:

import image from '@ohos.multimedia.image';

@Entry
@Component
struct ImageEdit{
  @State imagePixelMap:PixelMap = undefined
  @State edit:boolean = false

  @Builder buttonModel($$:{textContent,action}){
    Button($$.textContent)
      .fontSize(14)
      .height(30)
      .width(60)
      .borderRadius(10)
      .backgroundColor('#E8A027')
      .onClick(()=>{
        $$.action
        this.edit = true
      })
  }

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

  // 對pixelMap進行裁剪
  async crop_image(){
    let pixelMap = await this.get_pixelmap()
    pixelMap.crop({x:0,y:0,size:{height:300,width:300}})
    this.imagePixelMap = pixelMap
  }

  // 對pixelMap進行縮放
  async scale_image(){
    let pixelMap = await this.get_pixelmap()
    pixelMap.scale(0.5,0.5)
    this.imagePixelMap = pixelMap
  }

  // 對pixelMap進行偏移
  async translate_image(){
    let pixelMap = await this.get_pixelmap()
    pixelMap.translate(100,100);
    this.imagePixelMap = pixelMap
  }

  // 對pixelMap進行旋轉
  async rotate_image(){
    let pixelMap = await this.get_pixelmap()
    pixelMap.rotate(90);
    this.imagePixelMap = pixelMap
  }

  // 對pixelMap進行翻轉
  async flip_image(){
    let pixelMap = await this.get_pixelmap()
    pixelMap.flip(false, true);
    this.imagePixelMap = pixelMap
  }

  // 對pixelMap進行透明度調整
  async opacity_image(){
    let pixelMap = await this.get_pixelmap()
    pixelMap.opacity(0.5);
    this.imagePixelMap = pixelMap
  }

  build(){
    Column(){
      if(!this.edit){
        Row(){
          Image($r('app.media.httpimage')).objectFit(ImageFit.None)
        }.width('100%').height('50%').backgroundColor('#F0F0F0')
      }else{
        Row(){
          // 將編輯好的pixelMap傳遞給狀態變量imagePixelMap后,通過Image組件進行渲染
          Image(this.imagePixelMap).objectFit(ImageFit.None)
        }.width('100%').height('50%').backgroundColor('#F0F0F0')
      }

      Flex({wrap:FlexWrap.Wrap,justifyContent:FlexAlign.SpaceEvenly}){
        this.buttonModel({textContent:'裁剪',action:this.crop_image()})
        this.buttonModel({textContent:'縮放',action:this.scale_image()})
        this.buttonModel({textContent:'偏移',action:this.translate_image()})
        this.buttonModel({textContent:'旋轉',action:this.rotate_image()})
        this.buttonModel({textContent:'翻轉',action:this.flip_image()})
        this.buttonModel({textContent:'透明度',action:this.opacity_image()})
        Button('還原')
          .fontSize(14)
          .height(30)
          .width(60)
          .borderRadius(10)
          .margin({top:20})
          .backgroundColor('#A4AE77')
          .onClick(()=>{
            this.edit = false
          })
      }
      .margin({top:100})
      .height('100%')
      .width('100%')
    }
    .height('100%')
    .width('100%')
  }
}

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

51CTO 開源基礎軟件社區

https://ost.51cto.com

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

2022-05-26 14:50:15

ArkUITS擴展

2023-01-02 13:12:07

模型圖像

2024-02-05 12:45:33

AI訓練

2024-04-03 13:33:43

2022-04-11 14:04:29

散點圖Harmony操作系統

2020-06-28 08:21:07

Chrome瀏覽器Chrome瀏覽器

2022-03-02 16:08:31

Harmony應用開發鴻蒙

2025-01-17 10:30:00

Adobe生成式AI工具

2022-01-21 21:22:24

OpenHarmon操作系統鴻蒙

2021-06-06 16:05:31

OpenHarmony

2023-06-30 14:03:15

GIMP 3.0圖片編輯器

2021-08-26 05:15:22

圖片編輯器 H5-DooringMitu-Doorin

2023-08-02 07:25:52

在線圖片編輯器

2022-08-31 08:32:22

數據可視化項目nocode

2023-02-01 16:28:30

Linux內核鴻蒙

2023-04-21 15:54:08

應用開發鴻蒙

2022-05-20 10:32:49

事件循環器事件隊列鴻蒙

2022-04-01 15:18:04

HarmonyHDF 驅動鴻蒙

2022-10-12 15:00:02

設備開發應用開發
點贊
收藏

51CTO技術棧公眾號

不卡中文字幕| 九色在线免费| 欧美日本三区| 亚洲国产精品久久久久秋霞不卡 | 欧美亚洲一级片| 小早川怜子久久精品中文字幕| 久久久成人av毛片免费观看| ...xxx性欧美| 国产精品日韩欧美一区二区| 日批视频免费在线观看| 亚洲最大黄网| 亚洲男人天堂视频| 中文字幕在线视频一区二区| 神马久久午夜| 中文字幕五月欧美| 欧美福利精品| 午夜免费福利视频| 青青草91视频| 91精品国产九九九久久久亚洲| 日本一卡二卡在线播放| 9l视频自拍九色9l视频成人| 日本韩国精品一区二区在线观看| 欧美一级免费在线观看| 青青草免费观看免费视频在线| 久久99久久99| 日本视频久久久| 麻豆91精品91久久久| 欧洲三级视频| 亚洲加勒比久久88色综合| 日本不卡一区在线| 欧美大片1688| 黄色成人在线播放| 日本a在线天堂| 日本中文字幕视频在线| 久久久亚洲精品石原莉奈| 99久久99| 国产特黄一级片| 日本亚洲视频在线| 日本成人黄色片| 日韩少妇高潮抽搐| 欧美午夜不卡| 欧美成人免费在线观看| 人人艹在线视频| 国产探花在线精品一区二区| 日韩成人av网| 无码人妻一区二区三区在线| 日韩精品一级| 日韩一区二区三| 超碰在线免费av| 成人在线视频区| 欧美高清视频不卡网| xxx国产在线观看| 本网站久久精品| 欧美亚洲综合色| caoporn超碰97| 亚洲日本网址| 欧美怡红院视频| 天堂在线资源视频| 久久婷婷五月综合色丁香| 欧洲亚洲国产日韩| xxx国产在线观看| 亚洲欧洲专区| 欧美一区二区网站| 欧美日韩久久婷婷| 秋霞影院一区| 亚洲福利在线播放| 手机在线看片日韩| 免费看成人吃奶视频在线| 国产偷国产偷亚洲清高网站| 一级片手机在线观看| 欧美美女一区| 久久精品99久久香蕉国产色戒| 91麻豆精品成人一区二区| 午夜国产一区| 国内精品久久影院| aaaaaa毛片| 日本怡春院一区二区| 成人网欧美在线视频| 国产麻豆一精品一男同| 成人综合在线视频| 美日韩免费视频| av基地在线| 亚洲欧美日韩久久| 国产九九九九九| 午夜欧美巨大性欧美巨大| 欧美亚洲图片小说| 九九九久久久久久久| 亚洲一区 二区| 日韩精品视频中文在线观看 | 9l亚洲国产成人精品一区二三 | 精品国产乱码久久久久酒店 | 水蜜桃一区二区三区| 女女色综合影院| 亚洲国产另类av| 成人一区二区三| 激情综合婷婷| 亚洲精品色婷婷福利天堂| 国产破处视频在线观看| 欧美激情第二页| 日韩女优在线播放| 成人h动漫精品一区二区无码 | 免费黄色国产视频| 1024日韩| 国产欧美va欧美va香蕉在| 国精产品乱码一区一区三区四区| 久久婷婷色综合| 久久精品在线免费视频| 欧美色网一区| 日韩欧美另类在线| 天堂在线中文视频| 很黄很黄激情成人| 国产色综合天天综合网| 午夜影院免费视频| 综合中文字幕亚洲| 99免费视频观看| 91嫩草精品| 欧美大陆一区二区| 99久久久无码国产精品免费蜜柚| 精品一区二区在线看| 国产免费一区| 黄网站在线免费看| 在线视频观看一区| 四虎永久免费观看| 99久久久久| 国产成人高潮免费观看精品| 亚洲乱码精品久久久久..| 国产精品人妖ts系列视频| 中文字幕无码精品亚洲35| 国产精品日本一区二区三区在线| 亚洲区一区二区| 日韩少妇裸体做爰视频| 国产精品一二三在| 中文字幕av日韩精品| 欧美三级网址| 亚洲男子天堂网| 日韩精品国产一区二区| 国产成人亚洲精品狼色在线| 艳色歌舞团一区二区三区| 欧美a级在线观看| 亚洲精品一区二区三区福利| 无码人妻精品一区二区三区夜夜嗨 | 欧美人xxxx| 亚洲久久久久久久| 亚洲欧美bt| 欧美精品人人做人人爱视频| 忘忧草在线日韩www影院| 精品国产伦一区二区三区观看方式 | 国产综合久久久| 国产成人精品视频| 久久av少妇| 色琪琪一区二区三区亚洲区| 制服丝袜第二页| 亚洲色诱最新| 美女主播视频一区| 免费观看一级欧美片| 亚洲男人第一av网站| 在线观看 亚洲| 国产欧美日韩精品在线| 无人在线观看的免费高清视频| 美女少妇全过程你懂的久久| 国产mv久久久| 91大神在线网站| 欧美精品欧美精品系列| 一级性生活免费视频| 国产一区在线看| 欧美国产综合在线| 女一区二区三区| 国产不卡av在线免费观看| 国产高清av在线| 欧美日韩一区二区三区四区五区| 五月天免费网站| 国产一区二区三区香蕉| 精品国产一区二区三区无码| 国产伦理久久久久久妇女 | 亚洲天堂成人在线视频| 日韩xxx视频| 亚洲色图清纯唯美| 亚洲高清无码久久| 视频一区欧美精品| japanese在线视频| 美女主播精品视频一二三四| 日本精品视频在线| 精精国产xxxx视频在线| 337p日本欧洲亚洲大胆色噜噜| 国产视频91在线| 中文av一区二区| 美女又黄又免费的视频| 99国产精品私拍| 日韩妆和欧美的一区二区| 亚洲综合资源| 欧美亚洲成人精品| 老司机精品视频在线观看6| 精品久久人人做人人爱| 少妇高潮av久久久久久| 亚洲人成在线播放网站岛国| 亚洲精品乱码久久| 久久国产精品第一页| 大伊香蕉精品视频在线| 精品国产不卡| 国产精品二区在线观看| 精品三区视频| 欧美高清无遮挡| av大片在线播放| 欧美精品一区男女天堂| 亚洲天堂avav| 欧美日韩免费网站| 欧美黄色免费看| 国产日韩三级在线| 日本性生活一级片| 韩国欧美国产一区| 国产淫片av片久久久久久| 午夜国产一区| 青青草原国产免费| 九九热线有精品视频99| 国产成人一区二区三区免费看| av成人免费看| 7777kkkk成人观看| 在线播放免费av| 丝袜亚洲另类欧美重口| 水莓100在线视频| 日韩欧美亚洲另类制服综合在线| 中文字幕乱码人妻二区三区| 高潮白浆女日韩av免费看| 亚洲av鲁丝一区二区三区| 国产精品毛片久久久久久久| 日本aaa视频| 丰满放荡岳乱妇91ww| 性久久久久久久久久久久久久| 视频一区二区三区在线| 91视频 -- 69xx| 亚洲国产高清一区| 欧美另类videosbestsex日本| 久久人体视频| 亚洲精品在线免费| 国产探花一区| 日日骚一区二区网站| 伊人久久大香线蕉综合网站| 国产一区二区视频在线免费观看| 一区中文字幕| 成人三级在线| 高清精品视频| 国产一区二区精品免费| www国产精品| av观看久久| 亚洲一区二区三区在线免费| 亚洲自拍另类欧美丝袜| 国模大尺度视频一区二区| 91精品久久久久久久久久 | 精品视频一区二区不卡| 最新中文字幕一区| 日韩欧美国产一区二区| 亚洲GV成人无码久久精品| 激情成人中文字幕| 美女又爽又黄免费视频| 日韩欧美国产黄色| 成人免费一级片| 欧洲生活片亚洲生活在线观看| 三级网站在线播放 | xxxx国产精品| 精品电影一区二区三区| 日本黄色一区二区三区| 日韩成人xxxx| 国产高清视频免费最新在线| 中文字幕亚洲色图| 黄黄的网站在线观看| 色综合天天狠天天透天天伊人| 国产啊啊啊视频在线观看| 97精品在线视频| 欧美二三四区| 国产日韩视频在线观看| 精品午夜视频| 国产一区二区三区四区五区在线 | 99久久婷婷国产综合精品电影| 国产成人精品无码片区在线| 久久精品夜色噜噜亚洲aⅴ| 成人无码精品1区2区3区免费看| 1区2区3区欧美| 亚洲精品在线观看av| 日韩欧美精品中文字幕| 亚洲系列在线观看| 日韩视频免费观看高清完整版 | 亚洲国产无线乱码在线观看| 在线综合视频播放| 手机看片1024日韩| 在线日韩欧美视频| 四虎影视国产在线视频| 热99精品只有里视频精品| 成人在线观看免费播放| av免费精品一区二区三区| 亚洲成aⅴ人片久久青草影院| 亚洲春色综合另类校园电影| 欧美精品一区二区三区久久久竹菊| 国产精品333| 久久成人免费电影| 星空大象在线观看免费播放| 中文一区二区在线观看| 久久精品www人人爽人人| 色欧美日韩亚洲| 精品人妻一区二区三区三区四区| 亚洲美女久久久| a视频在线观看| 国产成人高潮免费观看精品| 欧美在线在线| 少妇免费毛片久久久久久久久| 欧美涩涩网站| 香港日本韩国三级网站| av网站免费线看精品| 99久久99久久精品国产| 日韩欧美在线免费| 成人久久久精品国产乱码一区二区| 亚洲人午夜精品| 97人人在线视频| 91在线中文字幕| 精品久久不卡| 欧美这里只有精品| 精久久久久久久久久久| 亚洲久久久久久久| 精品日韩美女的视频高清 | 国产视频一区在线| 欧洲一区二区三区| 91在线免费观看网站| 韩日一区二区三区| 337p粉嫩大胆噜噜噜鲁| 国产成人免费xxxxxxxx| 亚洲精品一区二区三区在线播放| 欧美日韩亚洲一区二| 高h调教冰块play男男双性文| 久久九九全国免费精品观看| 国产另类xxxxhd高清| 欧美国产一区二区在线| 亚洲免费大片| 荫蒂被男人添免费视频| 一区二区三区不卡视频在线观看| 国产理论视频在线观看| 日韩在线视频免费观看高清中文 | 99久久精品免费看国产四区| 99久久www免费| 尤蜜粉嫩av国产一区二区三区| 久久男人中文字幕资源站| 欧美三日本三级少妇99| 亚洲国产一区二区三区在线观看| 成人福利影视| 国产91aaa| 亚洲精品欧美| 国产精品麻豆入口| 精品国产31久久久久久| 刘玥91精选国产在线观看| 色在人av网站天堂精品| 蜜桃精品视频| 韩国无码av片在线观看网站| 国产高清一区日本| 国产亚洲精品女人久久久久久| 日韩视频免费观看高清在线视频| 污污的视频在线观看| 99久久一区三区四区免费| 精品动漫3d一区二区三区免费版 | 男人和女人啪啪网站| 99久久精品国产导航| 成人免费视频毛片| 亚洲人午夜精品| 另类一区二区| 公共露出暴露狂另类av| 精品夜夜嗨av一区二区三区| 国产高潮国产高潮久久久91| 精品捆绑美女sm三区| а√天堂中文资源在线bt| 欧美高清性xxxxhd| 久久精品999| 久久久久久久久精| 亚洲精品动漫久久久久| 色豆豆成人网| 特级黄色录像片| 99视频热这里只有精品免费| 中文字幕在线看人| 日韩在线中文字幕| 亚洲欧美日本国产| 国产成人黄色片| 国产精品乱人伦| www.天堂在线| 日本成人激情视频| 91精品国产调教在线观看| 国产精品久久久久久亚洲av| 欧美性猛交xxxx富婆弯腰| 日本电影全部在线观看网站视频| 18成人在线| 久久久久久一区二区| 91免费公开视频| 日韩精品免费视频| 国产麻豆精品| 97成人在线观看视频| 一区视频在线播放| 偷拍精品一区二区三区| 国产精品综合久久久| 亚洲黄色毛片| 国产精品久久国产精麻豆96堂| 欧美va天堂va视频va在线| 四虎4545www国产精品| av一区二区三区免费观看| 久久久久久久一区| 亚洲老妇色熟女老太|