精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

色婷婷国产精品| 国产极品模特精品一二| 26uuu欧美日本| 久久久久久国产精品三级玉女聊斋| 日韩精品视频一区二区在线观看| 青青草在线播放| 日韩一级欧洲| 亚洲欧美制服丝袜| 国产一二三四在线视频| 免费黄网站在线| 国精品**一区二区三区在线蜜桃| 欧美成人免费在线视频| 久久精品aⅴ无码中文字字幕重口| 成人影院在线看| 日本不卡视频在线观看| 一区二区亚洲欧洲国产日韩| 中文字幕视频三区| 伊人电影在线观看| 久久综合国产精品| 国产日韩欧美成人| 香蕉免费毛片视频| 欧美3p在线观看| 日韩精品中文字幕在线一区| 黄在线观看网站| 老司机精品视频在线观看6| 丁香一区二区三区| 国产精品海角社区在线观看| 国产午夜手机精彩视频| 久久99精品国产自在现线| 在线观看国产日韩| 国产日韩亚洲欧美在线| av影片免费在线观看| 日韩中文字幕亚洲一区二区va在线| 日韩在线观看精品| 美国黄色a级片| 欧美最新精品| 亚洲影院在线观看| 香蕉久久夜色| 天天操天天干天天操| 捆绑调教美女网站视频一区| 欧美情侣性视频| 久久久久久久久久久久| 影音成人av| 精品国产31久久久久久| 99re99热| 97电影在线看视频| 久久亚洲精华国产精华液| 国产欧美日韩中文字幕在线| 国产乡下妇女做爰| 精品视频黄色| 欧美大胆一级视频| 男人日女人下面视频| 日本高清在线观看wwwww色| 91亚洲午夜精品久久久久久| 翡翠波斯猫1977年美国| 91久久久久国产一区二区| 日韩视频在线一区二区三区 | 欧美视频在线第一页| av在线女优影院| 久久婷婷国产综合精品青草| 国产精品久久一区二区三区| 91精品中文字幕| 蜜桃av一区二区三区电影| 国产成人在线一区| 亚洲av中文无码乱人伦在线视色| av成人毛片| 久久久综合av| 91丝袜美腿美女视频网站| 国产成人精品视频免费看| 女同视频在线观看| 亚洲免费观看高清完整版在线| 精品一区在线播放| 国产喷水福利在线视频| 久久青草久久| 国产精品观看在线亚洲人成网| 香蕉污视频在线观看| 日韩中文字幕91| 国产精品久久久久久久久男 | 欧美电影一区| 精品一区二区亚洲| 午夜视频在线瓜伦| 日韩高清不卡| 337p亚洲精品色噜噜狠狠| 午夜天堂在线视频| 亚洲精品国产九九九| 欧美va亚洲va| 亚洲色图欧美自拍| 成人自拍在线| 亚洲黄页视频免费观看| 一区二区视频观看| 欧美视频免费| 免费91在线视频| 免费在线视频观看| 怡红院精品视频在线观看极品| 高清亚洲成在人网站天堂| 色婷婷在线观看视频| 亚洲在线观看| 8x海外华人永久免费日韩内陆视频| 人人干人人干人人干| 日韩精品视频网| 91在线观看免费高清完整版在线观看| 精品欧美在线观看| 国产成人午夜精品5599| 成人羞羞视频免费| 亚洲a视频在线| 国产成人一区二区精品非洲| 91亚色免费| 黄色美女一级片| 国产亚洲欧美一区在线观看| 亚洲精品二区| 波多野结衣久久| 在线亚洲高清视频| 欧美视频国产视频| 欧美五码在线| 日韩亚洲精品电影| 日韩欧美亚洲一区二区三区| 日韩电影在线观看一区| 97超级碰碰| 电影av一区| 一区二区成人在线| 无码日韩人妻精品久久蜜桃| 美女日韩一区| 在线播放日韩av| 久久久久久久福利| 国产欧美日本| 91在线免费观看网站| 欧美男男同志| 亚洲精品成人少妇| 冲田杏梨av在线| 国产在线播放精品| 国产亚洲精品美女久久久久| 久久综合激情网| 精彩视频一区二区三区| 蜜桃精品久久久久久久免费影院| 超碰在线最新| 欧美日韩国产一二三| 国产又粗又长又爽又黄的视频| 台湾亚洲精品一区二区tv| 欧美成人网在线| 中文精品久久久久人妻不卡| 高清成人在线观看| 一区二区三区视频| 美脚恋feet久草欧美| 精品av综合导航| 精品无人区无码乱码毛片国产| 欧美国产专区| 成人中文字幕在线观看| 成人综合影院| 色婷婷亚洲婷婷| 欧美一级片在线免费观看| 国产精品二区不卡| 日本久久久a级免费| 国产精品裸体瑜伽视频| 国产探花精品一区二区| 欧美国产激情二区三区| 国产精品波多野结衣| 91tv亚洲精品香蕉国产一区| 亚洲国产日韩精品在线| 久草福利资源在线观看| 国产在线精品免费| 亚洲一区二三| 日本免费在线一区| 神马久久久久久| 中文天堂在线资源| 欧美高清一级片在线观看| 欧美激情成人网| 国产欧美日韩影院| 日本亚洲欧洲色| 精品一二三区视频| 五月婷婷欧美视频| 亚洲精品第三页| 91精品99| 国产精品久久国产精品| 国产在线拍揄自揄拍视频| 亚洲精品在线观看视频| 国产 日韩 欧美 成人| 成人爱爱电影网址| 日韩少妇内射免费播放| 粉嫩一区二区三区四区公司1| 国产一区二区av| 96日本xxxxxⅹxxx17| 亚洲三级视频在线观看| 特种兵之深入敌后| 欧美日韩国产亚洲一区| 国产视频一区二区不卡| 国产理论在线| 日韩精品在线免费观看| 国产超碰人人爽人人做人人爱| 成人丝袜高跟foot| 日本成年人网址| 日韩视频在线观看| 91香蕉嫩草影院入口| 秋霞在线视频| 日韩精品亚洲元码| 亚洲午夜无码久久久久| 亚洲视频 欧洲视频| 性感美女一区二区三区| 日韩视频久久| 亚洲一区二区三区在线观看视频| 亚洲国产一区二区三区网站| 欧美日韩国产成人高清视频| 四虎影院在线域名免费观看| 大伊人狠狠躁夜夜躁av一区| 国产成人av无码精品| 日韩黄色免费网站| 久久久久久av无码免费网站下载| 日韩欧美四区| 国产在线不卡精品| sm久久捆绑调教精品一区| 这里精品视频免费| 韩国av永久免费| 色就色 综合激情| 国产精品 欧美激情| www成人在线观看| 久久精品国产露脸对白| 亚洲性人人天天夜夜摸| 日韩电影天堂视频一区二区| 亚洲精品不卡在线观看 | 深夜福利视频一区二区| www.日韩欧美| 五月婷婷狠狠干| 91麻豆精品国产91久久久久久| 国产一级做a爰片在线看免费| 91麻豆免费视频| 男人女人黄一级| 午夜国产欧美理论在线播放 | 日韩中文欧美| 精品一区久久| 亚洲91在线| 国产成人aa精品一区在线播放| 午夜在线小视频| 日韩精品中文字幕久久臀| 亚洲 小说区 图片区| 午夜视黄欧洲亚洲| 久久久久久久久久网站| 不卡视频在线观看| 亚洲一二三av| 日韩av一级电影| 精品嫩模一区二区三区| 亚洲影院天堂中文av色| 2019日本中文字幕| 久久免费电影| 久久久精品日本| 在线观看国产原创自拍视频| 日韩成人免费视频| 免费看国产片在线观看| 欧美一级免费大片| 91女人18毛片水多国产| 欧美伊人精品成人久久综合97| 欧美三级韩国三级日本三斤在线观看| 好看的av在线| 91麻豆123| 日韩av片免费观看| 另类小说综合欧美亚洲| 日韩在线视频在线| 亚洲情侣在线| 热这里只有精品| 国产精品午夜一区二区三区| 国产一区免费| 国产福利亚洲| 日本精品一区二区三区在线播放视频 | 欧美激情自拍| 天天综合中文字幕| 99国产精品免费视频观看| 亚洲午夜精品一区二区三区| 成人情趣视频网站| 欧美18视频| 少妇精品久久久一区二区| 免费中文日韩| 欧美日韩在线二区| 亚洲一区二区三区免费观看| 久久一区二区三区喷水| 亚洲一区二区在线观| 久久精品影视| 欧美一级特黄aaaaaa在线看片| 中文在线播放一区二区| 国产91视频一区| 午夜精品电影| 91精品国产91久久久久麻豆 主演| 国产主播精品| 国产特级黄色大片| 日韩国产欧美视频| 久久国产激情视频| 国产一区二区三区日韩| 中文字幕一区二区三区人妻在线视频| 久久精品国产999大香线蕉| 欧美性受xxxxxx黑人xyx性爽| 紧缚奴在线一区二区三区| 日韩一区二区三区久久| 日本午夜一本久久久综合| 天天看片天天操| 粉嫩aⅴ一区二区三区四区| 一区二区三区四区影院| 丁香亚洲综合激情啪啪综合| 亚洲精品第二页| 国产网站一区二区三区| 国产精品久久免费观看| 亚洲人精品午夜| 国产又大又黑又粗免费视频| 性久久久久久久久久久久| 中文国语毛片高清视频| 亚洲图片激情小说| 日韩三级免费看| 欧美日韩精品一二三区| 午夜精品久久久久久久99老熟妇| 亚洲国产小视频在线观看| 国产爆初菊在线观看免费视频网站| 日韩中文字幕视频在线| 尤物在线网址| 欧美亚洲在线视频| 成人日韩av| 国内视频一区| 2023国产精品久久久精品双| 成人在线观看你懂的| 美女精品在线| 中文字幕永久免费| 国产精品久久久久aaaa| 五月婷婷开心网| 在线观看不卡视频| 亚洲在线精品视频| 欧美高清视频在线高清观看mv色露露十八| 免费观看的毛片| 日韩在线视频观看| 黄毛片在线观看| 91影视免费在线观看| 欧美日韩性在线观看| 国产成人亚洲综合无码| 久久99精品国产91久久来源| 黄色国产在线观看| 亚洲宅男天堂在线观看无病毒| 在线观看国产一区二区三区| 欧美大片一区二区三区| 色综合久久影院| 日韩男女性生活视频| 精品视频一区二区三区在线观看| 欧美理论一区二区| 91高清一区| 青青草av网站| 99精品久久只有精品| 全网免费在线播放视频入口 | 精品一区二区日本| 亚洲性感美女99在线| 欧美精品色视频| 久久美女艺术照精彩视频福利播放| 久久精品国产亚洲av香蕉 | 日韩欧美电影一二三| 日本在线免费网| 国产91在线播放精品91| 全国精品免费看| 少妇人妻无码专区视频| 国产福利视频一区二区三区| 中文字幕av播放| 欧美日韩aaa| 三级av在线播放| 2020国产精品视频| 亚洲第一论坛sis| 国产手机免费视频| 国产精品一二一区| 国产精品三区在线观看| 欧美色爱综合网| 97在线观看免费观看高清| 国产精品九九九| 欧美少妇性xxxx| 天天爽天天爽夜夜爽| 欧美国产精品中文字幕| 亚洲性猛交富婆| 色噜噜狠狠色综合网图区| 丝袜美腿一区| 国产一区不卡在线观看| 精品动漫3d一区二区三区免费| 三级网站免费看| 亚洲午夜视频在线| 少妇高潮一区二区三区99小说| 国内精品免费午夜毛片| 欧美男男freegayvideosroom| 国产午夜福利100集发布| 成人av网站免费| 精品成人av一区二区在线播放| 亚洲第一男人天堂| 678在线观看视频| 久久综合九色综合网站| 日韩一区精品字幕| 国产精品夜夜夜爽阿娇| 欧美电影精品一区二区| 精精国产xxxx视频在线野外| 五月婷六月丁香| 五月激情综合网| 国产免费av在线| 成人免费淫片aa视频免费| 国精品一区二区三区| 精品少妇人妻一区二区黑料社区| 欧美日本韩国一区| av在线私库| 日本特级黄色大片| 97国产精品videossex| 一级片在线免费播放| 亚洲男女自偷自拍图片另类| 亚洲香蕉久久| 欧美日韩一区二区在线免费观看| 亚洲免费av网站|