import mediaLibrary from '@ohos.multimedia.mediaLibrary' import onvifclient from '@ohos.onvifclient'; import fs from '@ohos.file.fs' import util from '@ohos.util'; import FileUtil from '../../../common/utils/File' interface Params{ userName:string pwd:string ip:string port:string rlls:string } export default class FilePhoto{ private params:Params private context:any private fileUtil:FileUtil public mediaTest constructor(context) { (async ()=>{ const fileUtil = new FileUtil(context) const strConfig = await fileUtil.readFile('/mnt/hmdfs/100/account/device_view/local/files/logs/config/config3.txt'); const config = JSON.parse(strConfig) const {userName,ip,pwd,port,rlls} = config this.params = {userName,pwd,ip,port,rlls} this.context = context this.fileUtil = fileUtil })() } public async getPhoto(){ const {params,context,fileUtil} = this; const {userName,pwd,ip,port,rlls} = params; const mediaTest = mediaLibrary.getMediaLibrary(context); let mediaType = mediaLibrary.MediaType.IMAGE; let DIR_DOCUMENTS = mediaLibrary.DirectoryType.DIR_IMAGE; const path = await mediaTest.getPublicDirectory(DIR_DOCUMENTS); return new Promise(async (resolve)=>{ mediaTest.createAsset(mediaType, 'judge_face.jpg', path,(error,asset)=>{ asset.open('rw', (error, fd) => { if (fd > 0) { const file_path = "/mnt/hmdfs/100/account/device_view/local/files/Pictures/judge_face.jpg" const result3 = onvifclient.getVideoSnapshot(`rtsp://${userName}:${pwd}@${ip}:${port}/h264/ch${rlls}/main/av_stream`,file_path,fd); fs.closeSync(fd); asset.close(fd); fs.lstat(file_path).then((stat) => { console.info("get link status succeed, the size of file is" + stat.size); let file = fs.openSync(file_path, fs.OpenMode.READ_WRITE); const size=Number(stat.size)+100 let buf = new ArrayBuffer(size); let num = fs.readSync(file.fd, buf); const that = new util.Base64(); const array = new Uint8Array(buf); const result = that.encodeToStringSync(array);//base64圖片 fileUtil.deleteF(file_path,3) resolve(result) }).catch((err) => { console.info("get link status failed with error message: " + err.message + ", error code: " + err.code); }); } else { console.error('baoyihu getVideoSnapshot File Open failed with error: ' + error); } }); }); }) } }