子线程本地Resource参数类型转换成number

Signed-off-by: zgf <zenggaofeng2@h-partners.com>
This commit is contained in:
zgf 2024-08-27 16:48:48 +08:00
parent 6612dea1d5
commit 7252a2fe05
3 changed files with 32 additions and 17 deletions

View File

@ -1,6 +1,7 @@
## 3.1.0-rc.3 ## 3.1.0-rc.3
- 部分静态webp图片有delay属性导致识别成动图,改用getFrameCount识别 - 部分静态webp图片有delay属性导致识别成动图,改用getFrameCount识别
- 修复加载错误图后未去请求排队队列中的请求 - 修复加载错误图后未去请求排队队列中的请求
- 子线程本地Resource参数类型转换成number
## 3.1.0-rc.2 ## 3.1.0-rc.2
- 修复宽高不等svg图片显示有毛边 - 修复宽高不等svg图片显示有毛边

View File

@ -157,10 +157,21 @@ export class ImageKnifeDispatcher {
isWatchProgress = true isWatchProgress = true
} }
}); });
let src: string | number = ""
let moduleName: string = ""
let resName: string = ""
if((imageSrc as Resource).id != undefined) {
moduleName = (imageSrc as Resource).moduleName
src = (imageSrc as Resource).id
if(src == -1) {
resName = (imageSrc as Resource).params![0]
}
} else if(typeof imageSrc == "string") {
src = imageSrc
}
let request: RequestJobRequest = { let request: RequestJobRequest = {
context: currentRequest.context, context: currentRequest.context,
src: imageSrc, src: src,
headers: currentRequest.imageKnifeOption.headerOption, headers: currentRequest.imageKnifeOption.headerOption,
allHeaders: currentRequest.headers, allHeaders: currentRequest.headers,
componentWidth:currentRequest.componentWidth, componentWidth:currentRequest.componentWidth,
@ -176,7 +187,9 @@ export class ImageKnifeDispatcher {
isWatchProgress: isWatchProgress, isWatchProgress: isWatchProgress,
memoryKey: memoryKey, memoryKey: memoryKey,
fileCacheFolder: ImageKnife.getInstance().getFileCache()?.getCacheFolder(), fileCacheFolder: ImageKnife.getInstance().getFileCache()?.getCacheFolder(),
isAnimator:isAnimator isAnimator:isAnimator,
moduleName: moduleName == "" ? undefined : moduleName,
resName: resName == "" ? undefined : resName
} }
if(request.customGetImage == undefined) { if(request.customGetImage == undefined) {
@ -391,12 +404,12 @@ async function requestJob(request: RequestJobRequest, requestList?: List<ImageKn
receiveSize: number = 2000 receiveSize: number = 2000
totalSize: number = 2000 totalSize: number = 2000
} }
let src = typeof request.src == "number" ? request.resName != undefined ? request.resName : request.src + "" : request.src
// 生成文件key // 生成文件key
let fileKey = request.engineKey.generateFileKey(request.src, request.signature,request.isAnimator) let fileKey = request.engineKey.generateFileKey(src, request.signature,request.isAnimator)
// 判断自定义下载 // 判断自定义下载
if (request.customGetImage !== undefined && request.requestSource == ImageKnifeRequestSource.SRC) { if (request.customGetImage !== undefined && request.requestSource == ImageKnifeRequestSource.SRC && typeof request.src == "string") {
// 先从文件缓存获取 // 先从文件缓存获取
resBuf = FileCache.getFileCacheByFile(request.context, fileKey , request.fileCacheFolder) resBuf = FileCache.getFileCacheByFile(request.context, fileKey , request.fileCacheFolder)
if (resBuf === undefined) { if (resBuf === undefined) {
@ -524,22 +537,21 @@ async function requestJob(request: RequestJobRequest, requestList?: List<ImageKn
} }
} }
} }
} else if ((request.src as Resource).id !== undefined) { //从资源文件获取 } else if (typeof request.src == "number") { //从资源文件获取
let res = request.src as Resource; let manager = request.context.createModuleContext(request.moduleName).resourceManager
let manager = request.context.createModuleContext(res.moduleName).resourceManager
if (resBuf == undefined && request.onlyRetrieveFromCache != true && request.requestSource == ImageKnifeRequestSource.SRC) { if (resBuf == undefined && request.onlyRetrieveFromCache != true && request.requestSource == ImageKnifeRequestSource.SRC) {
if(res.id == -1) { if(request.src == -1) {
let resName = (res.params![0] as string) let resName = request.resName as string
resBuf = (await manager.getMediaByName(resName.substring(10))).buffer as ArrayBuffer resBuf = (await manager.getMediaByName(resName.substring(10))).buffer as ArrayBuffer
} else { } else {
resBuf = manager.getMediaContentSync(res.id).buffer as ArrayBuffer resBuf = manager.getMediaContentSync(request.src).buffer as ArrayBuffer
} }
} else if (resBuf == undefined && request.requestSource != ImageKnifeRequestSource.SRC) { } else if (resBuf == undefined && request.requestSource != ImageKnifeRequestSource.SRC) {
if(res.id == -1) { if(request.src == -1) {
let resName = (res.params![0] as string) let resName = request.resName as string
resBuf = (await manager.getMediaByName(resName.substring(10))).buffer as ArrayBuffer resBuf = (await manager.getMediaByName(resName.substring(10))).buffer as ArrayBuffer
} else { } else {
resBuf = manager.getMediaContentSync(res.id).buffer as ArrayBuffer resBuf = manager.getMediaContentSync(request.src).buffer as ArrayBuffer
} }
} }
} }

View File

@ -86,7 +86,7 @@ export interface RequestJobResult {
*/ */
export interface RequestJobRequest { export interface RequestJobRequest {
context: common.UIAbilityContext, context: common.UIAbilityContext,
src: string | PixelMap | Resource, src: string | number,
headers?: Array<HeaderOptions>, headers?: Array<HeaderOptions>,
allHeaders: Map<string, Object>, allHeaders: Map<string, Object>,
componentWidth: number, componentWidth: number,
@ -101,6 +101,8 @@ export interface RequestJobRequest {
isWatchProgress: boolean isWatchProgress: boolean
memoryKey: string memoryKey: string
fileCacheFolder: string, fileCacheFolder: string,
isAnimator?: boolean isAnimator?: boolean,
moduleName?:string,
resName?: string
} }