diff --git a/src/main/ets/utils/FileHelper.ets b/src/main/ets/utils/FileHelper.ets index c2bd0b3..bc26baa 100644 --- a/src/main/ets/utils/FileHelper.ets +++ b/src/main/ets/utils/FileHelper.ets @@ -3,6 +3,9 @@ import fs, { ListFileOptions, ReadOptions, ReadTextOptions, WriteOptions } from import { BusinessError } from '@kit.BasicServicesKit'; import { StrHelper } from './StrHelper'; import { hilog } from '@kit.PerformanceAnalysisKit'; +import { image } from '@kit.ImageKit'; +import { buffer } from '@kit.ArkTS'; +import { LogHelper } from './LogHelper'; export class FileHelper { private constructor() { @@ -308,6 +311,30 @@ export class FileHelper { return fs.accessSync(path); } + static BmpToBase64(photoUri: string): Promise { + const imagePackerApi: image.ImagePacker = image.createImagePacker(); + const packOpts: image.PackingOption = { format: 'image/jpeg', quality: 100 }; + + return new Promise((resolve, reject) => { + let file = FileHelper.openSync(photoUri, fs.OpenMode.READ_ONLY) + const imageSource = image.createImageSource(file.fd); + LogHelper.error('file.fd:' + file.fd) + + imageSource.createPixelMap().then((pixelMap) => { + imagePackerApi.packing(pixelMap, packOpts).then((data: ArrayBuffer) => { + let buf: buffer.Buffer = buffer.from(data); + LogHelper.error('data:' + data) + resolve(buf.toString('base64')) + }).catch((err: BusinessError) => { + LogHelper.error('packing failed with err: ' + JSON.stringify(err)); + reject(err) + }) + }).catch((err: BusinessError) => { + LogHelper.error('createPixelMap failed with err: ' + JSON.stringify(err)); + reject(err) + }); + }) + } /** * 打开文件,支持使用URI打开文件。使用Promise异步回调。 diff --git a/src/main/ets/utils/PickerHelper.ets b/src/main/ets/utils/PickerHelper.ets index 992521c..e2cabcd 100644 --- a/src/main/ets/utils/PickerHelper.ets +++ b/src/main/ets/utils/PickerHelper.ets @@ -4,6 +4,7 @@ import { common } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; import { hilog } from '@kit.PerformanceAnalysisKit'; import { photoAccessHelper } from '@kit.MediaLibraryKit'; +import { LogHelper } from './LogHelper'; const DOCUMENT_DEFAULT_SELECT_NUMBER: number = 9; //数量 @@ -65,6 +66,7 @@ export class PickerHelper { let photoPicker = new photoAccessHelper.PhotoViewPicker(); let photoSelectResult: photoAccessHelper.PhotoSelectResult = await photoPicker.select(options); + LogHelper.error(JSON.stringify(photoSelectResult)) if (photoSelectResult && photoSelectResult.photoUris && photoSelectResult.photoUris.length > 0) { return photoSelectResult.photoUris; } else {