From fa5487e53c7631ed78833474322366aebafb204a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=8B=E8=83=BD=5F=E5=BC=A0=E5=BE=B7=E7=9B=9B?= Date: Mon, 8 Sep 2025 10:37:44 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DIDE=E5=91=8A=E8=AD=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/ets/common/utils/OCRManager.ets | 39 +++++++++++++------ .../main/ets/entryability/EntryAbility.ets | 8 +++- 2 files changed, 35 insertions(+), 12 deletions(-) diff --git a/entry/src/main/ets/common/utils/OCRManager.ets b/entry/src/main/ets/common/utils/OCRManager.ets index 4252e3b..c6bb8f2 100644 --- a/entry/src/main/ets/common/utils/OCRManager.ets +++ b/entry/src/main/ets/common/utils/OCRManager.ets @@ -19,6 +19,7 @@ import { Logger } from './Logger'; import { photoAccessHelper } from '@kit.MediaLibraryKit'; import { image } from '@kit.ImageKit'; import { fileIo as fs } from '@kit.CoreFileKit'; +import { BusinessError } from '@kit.BasicServicesKit'; export class OCRManager { static async recognizeByCamera(ctx: Context, loadingController: CustomDialogController): Promise { @@ -67,19 +68,35 @@ export class OCRManager { static async recognizeText(uri: string): Promise { // Visual information to be recognized. // Currently, only the visual information of the PixelMap type in color data format RGBA_8888 is supported. - let visionInfo: textRecognition.VisionInfo = { pixelMap: await OCRManager.getPixelMap(uri) }; - let result: textRecognition.TextRecognitionResult = await textRecognition.recognizeText(visionInfo); - visionInfo.pixelMap.release(); - return result.value; + let pixelMap = await OCRManager.getPixelMap(uri) + if (!pixelMap) { + return '' + } + try { + let visionInfo: textRecognition.VisionInfo = { pixelMap: pixelMap }; + let result: textRecognition.TextRecognitionResult = await textRecognition.recognizeText(visionInfo); + visionInfo.pixelMap.release(); + return result.value; + } catch (error) { + let err = error as BusinessError + Logger.error('OCRManager', `getPixelMap failed, code is ${err.code}, message is ${err.message}`); + return '' + } } - static async getPixelMap(uri: string): Promise { + static async getPixelMap(uri: string): Promise { // Convert image resources to PixelMap - let fileSource = await fs.open(uri, fs.OpenMode.READ_ONLY); - let imgSource: image.ImageSource = image.createImageSource(fileSource.fd); - let pixelMap: image.PixelMap = await imgSource.createPixelMap(); - fs.close(fileSource); - imgSource.release(); - return pixelMap; + try { + let fileSource = await fs.open(uri, fs.OpenMode.READ_ONLY); + let imgSource: image.ImageSource = image.createImageSource(fileSource.fd); + let pixelMap: image.PixelMap = await imgSource.createPixelMap(); + fs.close(fileSource) + imgSource.release(); + return pixelMap; + } catch (error) { + let err = error as BusinessError + Logger.error('OCRManager', `getPixelMap failed, code is ${err.code}, message is ${err.message}`); + return null; + } } } \ No newline at end of file diff --git a/entry/src/main/ets/entryability/EntryAbility.ets b/entry/src/main/ets/entryability/EntryAbility.ets index bc9af5c..0c20517 100644 --- a/entry/src/main/ets/entryability/EntryAbility.ets +++ b/entry/src/main/ets/entryability/EntryAbility.ets @@ -16,12 +16,18 @@ import { AbilityConstant, ConfigurationConstant, UIAbility, Want } from '@kit.AbilityKit'; import { hilog } from '@kit.PerformanceAnalysisKit'; import { window } from '@kit.ArkUI'; +import { BusinessError } from '@kit.BasicServicesKit'; const DOMAIN = 0x0000; export default class EntryAbility extends UIAbility { onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { - this.context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_LIGHT); + try { + this.context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_LIGHT); + } catch (error) { + let err = error as BusinessError + hilog.error(DOMAIN, 'testTag', 'setColorMode Failed', JSON.stringify(err)); + } hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onCreate'); } -- Gitee