Pre Merge pull request !440 from zgf/master

This commit is contained in:
zgf 2024-12-03 10:43:14 +00:00 committed by Gitee
commit 93b236ac7d
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
2 changed files with 22 additions and 5 deletions

View File

@ -206,7 +206,7 @@ export class ImageKnifeDispatcher {
requestList.add({ request: currentRequest, source: requestSource }) requestList.add({ request: currentRequest, source: requestSource })
return return
} }
LogUtil.info('image load getAndShow start:')
let isWatchProgress : boolean = false let isWatchProgress : boolean = false
if (currentRequest.imageKnifeOption.progressListener !== undefined && requestSource === ImageKnifeRequestSource.SRC) { if (currentRequest.imageKnifeOption.progressListener !== undefined && requestSource === ImageKnifeRequestSource.SRC) {
isWatchProgress = true isWatchProgress = true

View File

@ -35,6 +35,7 @@ import util from '@ohos.util';
import { FileTypeUtil } from './utils/FileTypeUtil'; import { FileTypeUtil } from './utils/FileTypeUtil';
import { DownsampleStrategy } from './downsampling/DownsampleStartegy'; import { DownsampleStrategy } from './downsampling/DownsampleStartegy';
import { Downsampler } from './downsampling/Downsampler'; import { Downsampler } from './downsampling/Downsampler';
import { common } from '@kit.AbilityKit';
class RequestData { class RequestData {
receiveSize: number = 2000 receiveSize: number = 2000
@ -53,8 +54,13 @@ export class ImageKnifeLoader {
callBackData.bufSize = resBuf.byteLength; callBackData.bufSize = resBuf.byteLength;
let typeValue = new FileTypeUtil().getFileType(resBuf); let typeValue = new FileTypeUtil().getFileType(resBuf);
if(typeValue == null) { if(typeValue == null) {
let unit8 = new Uint8Array(resBuf)
LogUtil.log('ImageKnife_DataTime_requestJob.end: getFileType is null ' + request.src) 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 return
} }
callBackData.type = typeValue; callBackData.type = typeValue;
@ -552,7 +558,7 @@ export class ImageKnifeLoader {
ImageKnifeLoader.assembleError(callBackData,LoadPhase.PHASE_SHARE_FILE, LoadPixelMapCode.IMAGE_LOAD_SHARE_FILE_FAILED_CODE) 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 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) ImageKnifeLoader.assembleError(callBackData,LoadPhase.PHASE_LOCAL_FILE)
try { try {
let stat = fs.statSync(request.src); let stat = fs.statSync(request.src);
@ -564,8 +570,10 @@ export class ImageKnifeLoader {
} }
} catch (err) { } catch (err) {
ImageKnifeLoader.assembleError(callBackData,LoadPhase.PHASE_LOCAL_FILE, LoadPixelMapCode.IMAGE_LOAD_LOCAL_FILE_FAILED_CODE) 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') { //从资源文件获取 } else if (typeof request.src == 'number') { //从资源文件获取
let manager = request.context.createModuleContext(request.moduleName).resourceManager let manager = request.context.createModuleContext(request.moduleName).resourceManager
@ -594,7 +602,16 @@ export class ImageKnifeLoader {
} }
ImageKnifeLoader.parseImage(resBuf,fileKey,request, callBackData) 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, static getDownsamplerDecodingOptions(typeValue: string, request: RequestJobRequest, size: Size,
SRC?: ImageKnifeRequestSource):image.DecodingOptions { SRC?: ImageKnifeRequestSource):image.DecodingOptions {
let reqSize = let reqSize =