diff --git a/library/src/main/ets/ImageKnifeDispatcher.ets b/library/src/main/ets/ImageKnifeDispatcher.ets index e585ee6..51d1325 100644 --- a/library/src/main/ets/ImageKnifeDispatcher.ets +++ b/library/src/main/ets/ImageKnifeDispatcher.ets @@ -206,7 +206,7 @@ export class ImageKnifeDispatcher { requestList.add({ request: currentRequest, source: requestSource }) return } - + LogUtil.info('image load getAndShow start:') let isWatchProgress : boolean = false if (currentRequest.imageKnifeOption.progressListener !== undefined && requestSource === ImageKnifeRequestSource.SRC) { isWatchProgress = true diff --git a/library/src/main/ets/ImageKnifeLoader.ets b/library/src/main/ets/ImageKnifeLoader.ets index 2a71b22..6d41279 100644 --- a/library/src/main/ets/ImageKnifeLoader.ets +++ b/library/src/main/ets/ImageKnifeLoader.ets @@ -35,6 +35,7 @@ import util from '@ohos.util'; import { FileTypeUtil } from './utils/FileTypeUtil'; import { DownsampleStrategy } from './downsampling/DownsampleStartegy'; import { Downsampler } from './downsampling/Downsampler'; +import { common } from '@kit.AbilityKit'; class RequestData { receiveSize: number = 2000 @@ -53,8 +54,13 @@ export class ImageKnifeLoader { callBackData.bufSize = resBuf.byteLength; let typeValue = new FileTypeUtil().getFileType(resBuf); if(typeValue == null) { + let unit8 = new Uint8Array(resBuf) LogUtil.log('ImageKnife_DataTime_requestJob.end: getFileType is null ' + request.src) - ImageKnifeLoader.makeEmptyResult(request,'request is not a valid image source', ImageKnifeLoader.assembleError(callBackData, LoadPhase.PHASE_GET_FORMAT, LoadPixelMapCode.IMAGE_PARSE_FORMAT_FAILED_CODE)) + ImageKnifeLoader.makeEmptyResult(request, + 'request is not a valid image source:' + request.src + ',buffer:' + resBuf.byteLength + ',unit8:' + unit8[0] + ',' + + unit8[1] + ',' + unit8[2], + ImageKnifeLoader.assembleError(callBackData, LoadPhase.PHASE_GET_FORMAT, + LoadPixelMapCode.IMAGE_PARSE_FORMAT_FAILED_CODE)) return } callBackData.type = typeValue; @@ -552,7 +558,7 @@ export class ImageKnifeLoader { ImageKnifeLoader.assembleError(callBackData,LoadPhase.PHASE_SHARE_FILE, LoadPixelMapCode.IMAGE_LOAD_SHARE_FILE_FAILED_CODE) loadError = 'LoadDataShareFileClient fs.open err happened uri=' + request.src + ' err.msg=' + err?.message + ' err.code=' + err?.code }) - } else { //从本地文件获取 + } else if (ImageKnifeLoader.isLocalLoadSrc(request.context, request.src)) { //从本地文件获取 ImageKnifeLoader.assembleError(callBackData,LoadPhase.PHASE_LOCAL_FILE) try { let stat = fs.statSync(request.src); @@ -564,8 +570,10 @@ export class ImageKnifeLoader { } } catch (err) { ImageKnifeLoader.assembleError(callBackData,LoadPhase.PHASE_LOCAL_FILE, LoadPixelMapCode.IMAGE_LOAD_LOCAL_FILE_FAILED_CODE) - loadError = err + loadError = 'fileDir or CacheDir:' + err } + } else { + loadError = 'wrong link :' + request.src } } else if (typeof request.src == 'number') { //从资源文件获取 let manager = request.context.createModuleContext(request.moduleName).resourceManager @@ -594,7 +602,16 @@ export class ImageKnifeLoader { } ImageKnifeLoader.parseImage(resBuf,fileKey,request, callBackData) } - + static isLocalLoadSrc(context: Object | undefined, loadSrc: string): boolean { + if (context != undefined) { + let fileDir: string = (context as common.UIAbilityContext).filesDir as string; + let cacheDir: string = (context as common.UIAbilityContext).cacheDir as string + if (loadSrc.startsWith(fileDir) || loadSrc.startsWith(cacheDir)) { + return true; + } + } + return false; + } static getDownsamplerDecodingOptions(typeValue: string, request: RequestJobRequest, size: Size, SRC?: ImageKnifeRequestSource):image.DecodingOptions { let reqSize =