diff --git a/entry/src/main/ets/common/utils/OCRManager.ets b/entry/src/main/ets/common/utils/OCRManager.ets index 4252e3be3ab2069e4eaa5fc38e01dcdc97393709..c6bb8f2f9a013f59468a90e75984ce35aa62c91a 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 bc9af5ce98616f1df4074a8cf49199f4398310cb..0c20517d27dabc3f7523c16e3ce84d9fc5af89e9 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'); }