成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

鴻蒙HarmonyOS之獲取系統照片并解碼渲染顯示(附完整Demo)

開發 OpenHarmony
文章由鴻蒙社區產出,想要了解更多內容請前往:51CTO和華為官方戰略合作共建的鴻蒙技術社區https://harmonyos.51cto.com/#zz

[[373173]]

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com/#zz

聲明一下哦,這是我看了夏曹俊老師在周六的直播預習材料的加持下所寫的一個小demo,大家記得都去看夏老師的直播哦,入口主頁就有顯示。

不多說,先上demo的跑起來的效果,如下兩張圖:點擊顯示圖片的按鈕之后就會顯示出一張圖片(圖片是個什么玩意,知足吧,我拿遠程模擬機拍攝的)

完整demo在附件中進行下載

PS說一下操作步驟吧,把demo燒進手機,記住此時候的手機是沒有圖片的,先打開照相機拍攝一張圖片,然后你就會得到和下面截圖一樣的什么玩意的圖片,然后打開demo,點擊顯示圖片按鈕就會顯示你拍攝到的圖片了)

老規矩還是先說一下大概思路:

1.讀取本機的圖片,首先你得有權限,所以先想辦法獲得權限

2.獲得權限之后,就可以使用類似數據庫的搜索方法來搜索圖片的ID了

3.獲得ID之后,然后將其轉換為uri

4.得到uri之后,然后使用uri生成Pixmap

5.得到Pixmap之后,使用Image來渲染其Pixmap

1.來獲得讀取照片的權限

在config中添加如下配置文件:

  1. "reqPermissions": [{ 
  2.  
  3. "name""ohos.permission.READ_USER_STORAGE" 
  4.  

 然后在java代碼中獲取到這個權限

  1. String[] permission = {"ohos.permission.READ_USER_STORAGE"}; 
  2.  
  3. requestPermissionsFromUser(permission,0); 

 2.獲得權限之后,就可以使用類似數據庫的搜索方法來搜索圖片的ID了

首先獲得一個DataAbilityHelper

  1. DataAbilityHelper helper = DataAbilityHelper.creator(getContext()); 

然后調用query查詢方法獲得圖片ID,這里其實只有一張

  1. ResultSet result = helper.query(AVStorage.Images.Media.EXTERNAL_DATA_ABILITY_URI, nullnull); 
  2.  
  3. int mediaId = result.getInt(result.getColumnIndexForName(AVStorage.Images.Media.ID)); 

 3.獲得ID之后,然后將其轉換為uri

  1. Uri uri = Uri.appendEncodedPathToUri(AVStorage.Images.Media.EXTERNAL_DATA_ABILITY_URI,""+mediaId); 

4.得到uri之后,然后使用uri生成Pixmap

4.1 先將得到的uri使用openFile的API得到FileDescriptor對象

4.2 使用上一步的對象作為參數新建一個ImageSource對象和這個對象之下的DecodingOptions對象

4.3 然后調用上一步建好的ImageSource對象的createThumbnailPixelmap方法生成Pixmap

  1. FileDescriptor filedesc = helper.openFile(uri,"r"); 
  2.  
  3. ImageSource.DecodingOptions decodingOpts = new ImageSource.DecodingOption(); 
  4.  
  5. decodingOpts.desiredSize = new Size(300,300); 
  6.  
  7. ImageSource imageSource = ImageSource.create(filedesc,null); 
  8.  
  9. PixelMap pixelMap = imageSource.createThumbnailPixelmap(decodingOpts,true); 

 5.得到Pixmap之后,使用Image來渲染其Pixmap

無論使用何種手段得到一個Image對象,然后調用它的setPixelMap將上一步得到的Pixmap作為參數傳進去就OK了。至于別的都是一些對Image其他屬性的設置。

  1. Image img = (Image)findComponentById(ResourceTable.Id_image1); 
  2.  
  3. img.setId(mediaId); 
  4.  
  5. img.setHeight(300); 
  6.  
  7. img.setWidth(300); 
  8.  
  9. img.setMarginTop(20); 
  10.  
  11. img.setMarginLeft(20); 
  12.  
  13. img.setPixelMap(pixelMap); 
  14.  
  15. img.setScaleMode(Image.ScaleMode.ZOOM_CENTER); 

 由于時間比較急,所以這個demo比較簡單,只可以顯示一張圖片,下周我應該會在這個demo的基礎上繼續完善,有興趣的朋友可以關注一下。

完整demo的源碼見附件

©著作權歸作者和HarmonyOS技術社區共同所有,如需轉載,請注明出處,否則將追究法律責任

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com/#zz

 

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2021-01-07 10:04:43

鴻蒙HarmonyOS手機APP開發

2021-05-28 09:52:00

鴻蒙HarmonyOS應用

2022-06-29 13:59:40

家居應用鴻蒙

2021-12-10 10:12:44

鴻蒙HarmonyOS應用

2021-10-08 10:02:50

鴻蒙HarmonyOS應用

2021-01-04 11:44:05

鴻蒙HarmonyOSAbilitySlic

2020-11-11 11:56:05

HarmonyOS

2011-06-14 18:37:50

Flash

2022-07-05 16:03:29

電源管理子系統鴻蒙

2020-11-17 11:48:44

HarmonyOS

2021-05-19 08:41:11

鴻蒙HarmonyOS應用

2020-10-19 17:58:14

創新中國新基建智慧經濟

2022-08-25 21:46:51

網絡通訊應用開發

2021-01-11 10:05:03

鴻蒙HarmonyOS鴻蒙3861

2020-11-25 12:02:02

TableLayout

2021-05-17 14:37:02

鴻蒙HarmonyOS應用

2018-02-05 08:25:14

LinuxDebian離線更新

2015-09-16 13:54:30

Android性能優化渲染

2021-01-20 13:50:36

鴻蒙HarmonyOS應用開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产在线观看一区二区三区 | 亚洲一区免费在线 | 久久久久国产精品 | 在线观看成人 | 久久一视频 | 亚洲一区二区三区视频在线 | 在线一区视频 | h片在线播放 | 国产精品福利视频 | 国产美女福利在线观看 | 国产午夜精品一区二区三区四区 | 久久精品视频在线播放 | 午夜丰满少妇一级毛片 | 少妇黄色 | 国内精品一区二区三区 | 美女福利网站 | 日韩1区2区 | 九九热在线免费视频 | 人人干人人爽 | 国产一区二区黑人欧美xxxx | 日本一区二区三区在线观看 | 免费黄色片视频 | 日韩伦理一区二区 | 九九热国产精品视频 | 欧美精品一区在线 | 中文字幕一区二区三 | 成人h片在线观看 | 欧美在线a | 国产农村妇女毛片精品久久麻豆 | 国产小视频自拍 | 国产一级精品毛片 | 国产精品欧美一区二区三区不卡 | 欧美一区二区三区日韩 | www视频在线观看 | 日韩久久久一区二区 | 亚洲图片一区二区三区 | 综合久久亚洲 | 色橹橹欧美在线观看视频高清 | 亚洲一区二区久久 | 欧美日产国产成人免费图片 | 北条麻妃99精品青青久久主播 |