From c2425f621aa4076ae371dbb25f665327055472e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E5=8B=A4=E6=B0=91?= Date: Sat, 9 Nov 2024 17:13:53 +0800 Subject: [PATCH] =?UTF-8?q?feat(app):=20=E6=B7=BB=E5=8A=A0=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E5=8F=8D=E9=A6=88=E5=8A=9F=E8=83=BD-=20=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E9=97=AE=E9=A2=98=E5=8F=8D=E9=A6=88=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=20FeedbackView=20-=20=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E5=8F=8D=E9=A6=88=E5=9B=BE=E7=89=87=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0=E5=92=8C=E6=8F=90=E4=BA=A4=E5=8A=9F=E8=83=BD=20-=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=9B=B8=E5=85=B3=20API=20=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E5=92=8C=E6=95=B0=E6=8D=AE=E6=A8=A1=E5=9E=8B-=20=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E5=9B=BE=E7=89=87=E9=80=89=E6=8B=A9=E5=92=8C=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/ets/utils/FileHelper.ets | 27 +++++++++++++++++++++++++++ src/main/ets/utils/PickerHelper.ets | 2 ++ 2 files changed, 29 insertions(+) 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 {