自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

開(kāi)發(fā) OpenHarmony
文章由鴻蒙社區(qū)產(chǎn)出,想要了解更多內(nèi)容請(qǐng)前往:51CTO和華為官方戰(zhàn)略合作共建的鴻蒙技術(shù)社區(qū)https://harmonyos.51cto.com/#zz

[[373173]]

想了解更多內(nèi)容,請(qǐng)?jiān)L問(wèn):

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

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

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

不多說(shuō),先上demo的跑起來(lái)的效果,如下兩張圖:點(diǎn)擊顯示圖片的按鈕之后就會(huì)顯示出一張圖片(圖片是個(gè)什么玩意,知足吧,我拿遠(yuǎn)程模擬機(jī)拍攝的)

完整demo在附件中進(jìn)行下載

PS說(shuō)一下操作步驟吧,把demo燒進(jìn)手機(jī),記住此時(shí)候的手機(jī)是沒(méi)有圖片的,先打開(kāi)照相機(jī)拍攝一張圖片,然后你就會(huì)得到和下面截圖一樣的什么玩意的圖片,然后打開(kāi)demo,點(diǎn)擊顯示圖片按鈕就會(huì)顯示你拍攝到的圖片了)

老規(guī)矩還是先說(shuō)一下大概思路:

1.讀取本機(jī)的圖片,首先你得有權(quán)限,所以先想辦法獲得權(quán)限

2.獲得權(quán)限之后,就可以使用類似數(shù)據(jù)庫(kù)的搜索方法來(lái)搜索圖片的ID了

3.獲得ID之后,然后將其轉(zhuǎn)換為uri

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

5.得到Pixmap之后,使用Image來(lái)渲染其Pixmap

1.來(lái)獲得讀取照片的權(quán)限

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

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

 然后在java代碼中獲取到這個(gè)權(quán)限

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

 2.獲得權(quán)限之后,就可以使用類似數(shù)據(jù)庫(kù)的搜索方法來(lái)搜索圖片的ID了

首先獲得一個(gè)DataAbilityHelper

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

然后調(diào)用query查詢方法獲得圖片ID,這里其實(shí)只有一張

  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之后,然后將其轉(zhuǎn)換為uri

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

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

4.1 先將得到的uri使用openFile的API得到FileDescriptor對(duì)象

4.2 使用上一步的對(duì)象作為參數(shù)新建一個(gè)ImageSource對(duì)象和這個(gè)對(duì)象之下的DecodingOptions對(duì)象

4.3 然后調(diào)用上一步建好的ImageSource對(duì)象的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來(lái)渲染其Pixmap

無(wú)論使用何種手段得到一個(gè)Image對(duì)象,然后調(diào)用它的setPixelMap將上一步得到的Pixmap作為參數(shù)傳進(jìn)去就OK了。至于別的都是一些對(duì)Image其他屬性的設(shè)置。

  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); 

 由于時(shí)間比較急,所以這個(gè)demo比較簡(jiǎn)單,只可以顯示一張圖片,下周我應(yīng)該會(huì)在這個(gè)demo的基礎(chǔ)上繼續(xù)完善,有興趣的朋友可以關(guān)注一下。

完整demo的源碼見(jiàn)附件

©著作權(quán)歸作者和HarmonyOS技術(shù)社區(qū)共同所有,如需轉(zhuǎn)載,請(qǐng)注明出處,否則將追究法律責(zé)任

想了解更多內(nèi)容,請(qǐng)?jiān)L問(wèn):

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

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

 

責(zé)任編輯:jianghua 來(lái)源: 鴻蒙社區(qū)
相關(guān)推薦

2021-01-07 10:04:43

鴻蒙HarmonyOS手機(jī)APP開(kāi)發(fā)

2022-06-29 13:59:40

家居應(yīng)用鴻蒙

2021-05-28 09:52:00

鴻蒙HarmonyOS應(yīng)用

2021-12-10 10:12:44

鴻蒙HarmonyOS應(yīng)用

2021-10-08 10:02:50

鴻蒙HarmonyOS應(yīng)用

2011-06-14 18:37:50

Flash

2022-07-05 16:03:29

電源管理子系統(tǒng)鴻蒙

2020-11-11 11:56:05

HarmonyOS

2020-10-19 17:58:14

創(chuàng)新中國(guó)新基建智慧經(jīng)濟(jì)

2021-01-04 11:44:05

鴻蒙HarmonyOSAbilitySlic

2018-02-05 08:25:14

LinuxDebian離線更新

2021-05-19 08:41:11

鴻蒙HarmonyOS應(yīng)用

2021-01-11 10:05:03

鴻蒙HarmonyOS鴻蒙3861

2022-08-25 21:46:51

網(wǎng)絡(luò)通訊應(yīng)用開(kāi)發(fā)

2015-09-16 13:54:30

Android性能優(yōu)化渲染

2010-07-28 13:20:25

IT運(yùn)維系統(tǒng)

2020-11-17 11:48:44

HarmonyOS

2022-08-12 19:07:58

電源管理子系統(tǒng)鴻蒙

2024-03-14 08:24:25

MediaCodec解碼播放Android
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)