Compare commits

..

No commits in common. "a45fb6af7d1999309e16b03c27e339215ced7a1e" and "30c327747bdf13662eb8693850627f961bc6c58a" have entirely different histories.

4 changed files with 19 additions and 32 deletions

View File

@ -1,8 +1,7 @@
## 3.2.0-rc.3
## 3.2.0
- Fix bug: PixelMap size exceeds the maximum value of memory cache and is not cached
- Dealing with exception scenarios where imageSource.getImageInfo return undefined
- Fix inability to parse Resource format images of other modules
- Improve the error logs
## 3.2.0-rc.2
- Added callback information for image loading

View File

@ -14,7 +14,7 @@
"main": "index.ets",
"repository": "https://gitee.com/openharmony-tpc/ImageKnife",
"type": "module",
"version": "3.2.0-rc.3",
"version": "3.2.0",
"dependencies": {
"@ohos/gpu_transform": "^1.0.2"
},

View File

@ -339,7 +339,7 @@ export class ImageKnifeDispatcher {
let pixelmap = requestJobResult.pixelMap;
if (pixelmap === undefined) {
LogUtil.error('ImageKnife_DataTime_getAndShowImage_CallBack.pixelmap undefined:'+currentRequest.imageKnifeOption.loadSrc + " error: " + requestJobResult.loadFail)
LogUtil.log('ImageKnife_DataTime_getAndShowImage_CallBack.pixelmap undefined:'+currentRequest.imageKnifeOption.loadSrc)
requestList.forEach((requestWithSource: ImageKnifeRequestWithSource) => {
// 回调请求失败
if (requestWithSource.source === ImageKnifeRequestSource.SRC &&

View File

@ -125,8 +125,7 @@ export class ImageKnifeLoader {
let imageInfoSync = imageSource.getImageInfoSync()
if (imageInfoSync == undefined){
imageSource.release()
ImageKnifeLoader.makeEmptyResult(request, 'getImageInfoSync failed')
ImageKnifeLoader.makeEmptyResult(request, "Fail to get image info of imageSource")
return
}
let size = imageInfoSync.size
@ -139,8 +138,7 @@ export class ImageKnifeLoader {
ImageKnifeLoader.getDownsamplerDecodingOptions(typeValue, request, size, ImageKnifeRequestSource.SRC)
}
} catch (err) {
imageSource.release()
ImageKnifeLoader.makeEmptyResult(request, 'getDownsamplerDecodingOptions failed:' + err)
ImageKnifeLoader.makeEmptyResult(request, err)
return
}
timeInfo.decodeStartTime = Date.now();
@ -153,8 +151,7 @@ export class ImageKnifeLoader {
}).catch((error: BusinessError) => {
timeInfo.decodeEndTime = Date.now();
imageSource.release()
ImageKnifeLoader.makeEmptyResult(request, 'createPixelMap failed:' + JSON.stringify(error),
ImageKnifeLoader.assembleError(callBackData, LoadPhase.PHASE_CREATE_PIXEL_MAP, LoadPixelMapCode.IMAGE_DECODE_ERROR_CODE))
ImageKnifeLoader.makeEmptyResult(request,JSON.stringify(error), ImageKnifeLoader.assembleError(callBackData, LoadPhase.PHASE_CREATE_PIXEL_MAP, LoadPixelMapCode.IMAGE_DECODE_ERROR_CODE))
return
})
if (request.requestSource === ImageKnifeRequestSource.SRC && request.transformation !== undefined && resPixelmap !== undefined) {
@ -165,11 +162,11 @@ export class ImageKnifeLoader {
try {
resPixelmap?.setTransferDetached(true)
} catch (e) {
LogUtil.error('PixelMap setTransferDetached failed:' + JSON.stringify(e))
LogUtil.error('PixelMap setTransferDetached err:'+JSON.stringify(e))
}
//获取各个pixelMap的大小
if (resPixelmap !== undefined) {
if (resPixelmap && typeof resPixelmap !== 'string') {
let decodeImages: DecodeImageInfo[] = [];
let size = (resPixelmap as PixelMap).getImageInfoSync().size;
let decodeImage: DecodeImageInfo = {
@ -204,8 +201,7 @@ export class ImageKnifeLoader {
let imageInfoSync = imageSource.getImageInfoSync()
if (imageInfoSync == undefined){
imageSource.release()
ImageKnifeLoader.makeEmptyResult(request, 'getImageInfoSync failed')
ImageKnifeLoader.makeEmptyResult(request, "Fail to get image info of imageSource")
return
}
let size = imageInfoSync.size
@ -228,8 +224,7 @@ export class ImageKnifeLoader {
opts = ImageKnifeLoader.getDownsamplerDecodingOptions(typeValue, request, size)
}
} catch (err) {
imageSource.release()
ImageKnifeLoader.makeEmptyResult(request,'getDownsamplerDecodingOptions failed:' + err)
ImageKnifeLoader.makeEmptyResult(request,err)
return
}
timeInfo.decodeStartTime = Date.now();
@ -241,12 +236,12 @@ export class ImageKnifeLoader {
try {
resPixelmap.setTransferDetached(true)
} catch (e) {
LogUtil.error('PixelMap setTransferDetached failed:' + JSON.stringify(e))
LogUtil.error('PixelMap setTransferDetached err:'+JSON.stringify(e))
}
}).catch((error: BusinessError) => {
timeInfo.decodeEndTime = Date.now();
imageSource.release()
ImageKnifeLoader.makeEmptyResult(request,'getImageInfoSync failed:' + JSON.stringify(error), ImageKnifeLoader.assembleError(callBackData, LoadPhase.PHASE_CREATE_PIXEL_MAP, LoadPixelMapCode.IMAGE_DECODE_ERROR_CODE))
ImageKnifeLoader.makeEmptyResult(request,JSON.stringify(error), ImageKnifeLoader.assembleError(callBackData, LoadPhase.PHASE_CREATE_PIXEL_MAP, LoadPixelMapCode.IMAGE_DECODE_ERROR_CODE))
return
})
@ -281,9 +276,8 @@ export class ImageKnifeLoader {
let frameCount = await imageSource.getFrameCount()
let imageInfoSync = imageSource.getImageInfoSync()
imageSource.release()
if (imageInfoSync == undefined){
ImageKnifeLoader.makeEmptyResult(request, 'getImageInfoSync failed')
ImageKnifeLoader.makeEmptyResult(request, "Fail to get image info of imageSource")
return
}
let size = imageInfoSync.size
@ -291,6 +285,8 @@ export class ImageKnifeLoader {
callBackData.imageWidth = size.width;
callBackData.imageHeight = size.height;
imageSource.release()
if(frameCount == undefined || frameCount == 1) {
} else {
timeInfo.decodeStartTime = Date.now()
@ -322,15 +318,8 @@ export class ImageKnifeLoader {
let decodingOptions: image.DecodingOptions = {
editable: request.requestSource === ImageKnifeRequestSource.SRC && request.transformation !== undefined ? true : false,
}
let imageInfoSync = imageSource.getImageInfoSync()
if (imageInfoSync == undefined){
imageSource.release()
ImageKnifeLoader.makeEmptyResult(request, 'getImageInfoSync failed')
return
}
callBackData.imageWidth = imageInfoSync.size.width;
callBackData.imageHeight = imageInfoSync.size.height;
callBackData.imageWidth = imageSource.getImageInfoSync().size.width;
callBackData.imageHeight = imageSource.getImageInfoSync().size.height;
let pixelMapList: Array<PixelMap> = []
let delayList: Array<number> = []
timeInfo.decodeStartTime = Date.now();
@ -362,8 +351,7 @@ export class ImageKnifeLoader {
}).catch((error: BusinessError) => {
imageSource.release()
timeInfo.decodeEndTime = Date.now();
ImageKnifeLoader.makeEmptyResult(request,'createPixelMapList failed:' + JSON.stringify(error),
ImageKnifeLoader.assembleError(callBackData,LoadPhase.PHASE_CREATE_PIXEL_MAP,LoadPixelMapCode.IMAGE_DECODE_ERROR_CODE))
ImageKnifeLoader.makeEmptyResult(request,JSON.stringify(error), ImageKnifeLoader.assembleError(callBackData,LoadPhase.PHASE_CREATE_PIXEL_MAP,LoadPixelMapCode.IMAGE_DECODE_ERROR_CODE))
return
})
callBackData.decodeImages = decodeImages;
@ -378,7 +366,7 @@ export class ImageKnifeLoader {
}
emitter.emit(Constants.CALLBACK_EMITTER + request.memoryKey, { data: { 'value': res } })
} else {
ImageKnifeLoader.makeEmptyResult(request,'ImageKnifeAnimatorComponent not support format', ImageKnifeLoader.assembleError(callBackData,LoadPhase.PHASE_PARSE_IAMGE,LoadPixelMapCode.IMAGE_FORMAT_ERROR_CODE))
ImageKnifeLoader.makeEmptyResult(request,'ImageKnifeAnimatorComponent组件仅支持动态图', ImageKnifeLoader.assembleError(callBackData,LoadPhase.PHASE_PARSE_IAMGE,LoadPixelMapCode.IMAGE_FORMAT_ERROR_CODE))
}
}
static getHeaderObj(request:RequestJobRequest){