1.Code optimization

Signed-off-by: zhoulisheng <635547767@qq.com>
This commit is contained in:
zhoulisheng 2022-04-13 14:50:14 +08:00
parent aa015129d2
commit 8803de9ec0
6 changed files with 36 additions and 130 deletions

View File

@ -17,53 +17,5 @@ import {handler} from '@ohos/imageknife/src/main/ets/components/imageknife/pngj/
arkWorker.parentPort.onmessage = handler
//import arkWorker from '@ohos.worker';
//import {UPNG} from '@ohos/imageknife/src/main/ets/components/imageknife/pngj/UPNG'
//
//arkWorker.parentPort.onmessage = function (e) {
// var data = e.data;
// switch (data.type) {
// case 'readPngImageAsync':
// console.log('readPngImageAsync worker start 1')
// var png = UPNG.decode(data.data);
// let array = png.data;
// let arrayData = array.buffer.slice(array.byteOffset, array.byteLength + array.byteOffset)
// png.data = arrayData;
// let dataObj = { type: 'readPngImageAsync', data: png, receiver: data.data}
// arkWorker.parentPort.postMessage(dataObj, [png.data, data.data]);
// console.log('readPngImageAsync worker to main 1')
// break;
// case 'writePngWithStringAsync':
// console.log('writePngWithStringAsync worker start 1')
// let addInfo = data.info;
// let pngDecode = UPNG.decode(data.data);
// let newPng = UPNG.encodeWithString(addInfo, UPNG.toRGBA8(pngDecode), pngDecode.width, pngDecode.height, 0)
// let dataObj2 = { type: 'writePngWithStringAsync', data: newPng, receiver: data.data}
// arkWorker.parentPort.postMessage(dataObj2, [newPng, data.data]);
// console.log('writePngWithStringAsync worker to main 1')
// break;
// case 'writePngAsync':
// console.log('writePngAsync worker start 1')
// let pngDecode3 = UPNG.decode(data.data);
// let newPng3 = UPNG.encode(UPNG.toRGBA8(pngDecode3), pngDecode3.width, pngDecode3.height, 0)
// let dataObj3 = { type: 'writePngAsync', data: newPng3, receiver: data.data}
// arkWorker.parentPort.postMessage(dataObj3, [newPng3, data.data]);
// console.log('writePngAsync worker to main 1')
// break;
// case 'normal':
// arkWorker.parentPort.postMessage(data);
// break;
// case 'error':
// throw new Error('123');
// break;
// case 'buffer':
// let uint8Array = new Uint8Array(data.data);
// arkWorker.parentPort.postMessage(data, [data.data]);
//
// break;
// default:
//
// break
// }
//}

View File

@ -28,11 +28,11 @@ export class EngineKey implements Key {
// 内存缓存 缓存生成规则:是否会影响图片内容,不影响则通用(strategy onlyRetrieveFromCache isCacheable)为通用项目
// 生成规则 加载数据原 各类参数(排除监听 排除 占位图 失败占位图)
generateCacheKey(): string{
console.log('generateCacheKey 1');
let loadSrc = JSON.stringify(this.request.loadSrc);
console.log('generateCacheKey 2');
let size = JSON.stringify(this.request.size);
console.log('generateCacheKey 3');
let transformationsStr;
if(this.request && this.request.transformations) {
for (let i = 0; i < this.request.transformations.length; i++) {
@ -43,24 +43,24 @@ export class EngineKey implements Key {
}
}
}
console.log('generateCacheKey 4');
let dontAnimateFlag = JSON.stringify(this.request.dontAnimateFlag);
console.log('generateCacheKey 5');
let key = "loadSrc=" + loadSrc + ";" +
"size=" + size + ";" +
"transformations=" + transformationsStr + ";" +
"dontAnimateFlag=" + dontAnimateFlag + ";"
console.log('generateCacheKey 6');
return key;
}
// 磁盘缓存 缓存生成规则:是否会影响图片内容,不影响则通用(strategy onlyRetrieveFromCache isCacheable)为通用项目
// 生成规则 加载数据原 各类参数(排除监听 排除 占位图 失败占位图)
generateResourceKey(): string{
console.log('generateResourceKey 1');
let loadSrc = JSON.stringify(this.request.loadSrc);
console.log('generateResourceKey 2');
let size = JSON.stringify(this.request.size);
console.log('generateResourceKey 3');
let transformationsStr;
if(this.request && this.request.transformations) {
for (let i = 0; i < this.request.transformations.length; i++) {
@ -71,14 +71,14 @@ export class EngineKey implements Key {
}
}
}
console.log('generateResourceKey 4');
let dontAnimateFlag = JSON.stringify(this.request.dontAnimateFlag);
console.log('generateResourceKey 5');
let key = "loadSrc=" + loadSrc + ";" +
"size=" + size + ";" +
"transformations=" + transformationsStr + ";" +
"dontAnimateFlag=" + dontAnimateFlag + ";"
console.log('generateResourceKey 6');
return key;
}

View File

@ -204,7 +204,6 @@ export class ImageKnife {
// 正常加载
call(request: RequestOption) {
console.log("ImageKnife call")
// 添加全局监听
if(this.defaultListener) {
request.addListener(this.defaultListener)
@ -230,34 +229,23 @@ export class ImageKnife {
}
loadResources(request: RequestOption) {
console.log("ImageKnife loadResources")
let factories;
let cacheKey;
let transferKey;
let dataKey;
try {
factories = new EngineKeyFactories();
}catch(err){
console.log('ImageKnife loadResources1 err='+ err);
}
// 生成内存缓存key 内存 变换后磁盘
try {
cacheKey = factories.buildCacheKey(request);
}catch(err){
console.log('ImageKnife loadResources2 err='+ err);
}
// 生成磁盘缓存变换后数据key 变换后数据保存在磁盘
try{
transferKey = factories.buildResourceKey(request);
}catch(err){
console.log('ImageKnife loadResources3 err='+ err);
}
// 生成磁盘缓存源数据key 原始数据保存在磁盘
try{
dataKey = factories.buildDataKey(request);
}catch(err){
console.log('ImageKnife loadResources4 err='+ err);
}
request.generateCacheKey = cacheKey;
request.generateResourceKey = transferKey;
request.generateDataKey = dataKey;
@ -267,11 +255,6 @@ export class ImageKnife {
// 删除执行结束的running
removeRunning(request: RequestOption) {
console.log('removeRunning request key='+
'request.generateCacheKey =' + request.generateCacheKey+
'request.generateResourceKey =' + request.generateResourceKey+
'request.generateDataKey =' + request.generateDataKey
)
let index = -1;
for (let i = 0; i < this.runningRequest.length; i++) {
let tempRunning = this.runningRequest[i];
@ -342,8 +325,6 @@ export class ImageKnife {
// 启动新线程 去磁盘取 去网络取
loadCacheManager(request: RequestOption) {
console.log("ImageKnife loadCacheManager")
console.log("ImageKnife request ="+JSON.stringify(request))
if (this.keyNotEmpty(request)) {
let hasRunningRequest = false;
for (let i = 0; i < this.runningRequest.length; i++) {
@ -357,20 +338,8 @@ export class ImageKnife {
}
if (hasRunningRequest) {
this.pendingRequest.push(request);
console.log('pendingRequest +1 !')
console.log('pendingRequest request key='+
'request.generateCacheKey =' + request.generateCacheKey+
'request.generateResourceKey =' + request.generateResourceKey+
'request.generateDataKey =' + request.generateDataKey
)
} else {
this.runningRequest.push(request);
console.log('runningRequest +1 ! RequestManager.execute')
console.log('runningRequest request key='+
'request.generateCacheKey =' + request.generateCacheKey+
'request.generateResourceKey =' + request.generateResourceKey+
'request.generateDataKey =' + request.generateDataKey
)
// 不存在相同key的 任务可以并行
RequestManager.execute(request, this.memoryCache, this.diskMemoryCache, this.dataFetch, this.resourceFetch)
}
@ -405,10 +374,7 @@ export class ImageKnife {
}
parseSource(request: RequestOption) {
console.log("ImageKnife parseSource")
if ((typeof (request.loadSrc as image.PixelMap).isEditable) == 'boolean') {
console.log("ImageKnife parseSource PixelMap")
let imageKnifeData = new ImageKnifeData();
imageKnifeData.imageKnifeType = ImageKnifeData.PIXELMAP
imageKnifeData.imageKnifeValue = request.loadSrc as PixelMap
@ -416,12 +382,9 @@ export class ImageKnife {
} else
if (typeof request.loadSrc == 'string') {
// 进入三级缓存模型
console.log("ImageKnife parseSource string")
return this.loadResources(request);
} else {
console.log("ImageKnife parseSource Resource")
let res = request.loadSrc as Resource;
console.log("ImageKnife parseSource res="+JSON.stringify(res))
if (typeof res.id != 'undefined' && typeof res.type != 'undefined') {
//进入三级缓存模型 本地资源不参与磁盘缓存
let none = new NONE();

View File

@ -19,31 +19,25 @@ export function handler (e) {
var data = e.data;
switch (data.type) {
case 'readPngImageAsync':
console.log('readPngImageAsync worker start')
var png = UPNG.decode(data.data);
let array = png.data;
let arrayData = array.buffer.slice(array.byteOffset, array.byteLength + array.byteOffset)
png.data = arrayData;
let dataObj = { type: 'readPngImageAsync', data: png, receiver: data.data}
arkWorker.parentPort.postMessage(dataObj, [png.data, data.data]);
console.log('readPngImageAsync worker to main')
break;
case 'writePngWithStringAsync':
console.log('writePngWithStringAsync worker start')
let addInfo = data.info;
let pngDecode = UPNG.decode(data.data);
let newPng = UPNG.encodeWithString(addInfo, UPNG.toRGBA8(pngDecode), pngDecode.width, pngDecode.height, 0)
let dataObj2 = { type: 'writePngWithStringAsync', data: newPng, receiver: data.data}
arkWorker.parentPort.postMessage(dataObj2, [newPng, data.data]);
console.log('writePngWithStringAsync worker to main')
break;
case 'writePngAsync':
console.log('writePngAsync worker start')
let pngDecode3 = UPNG.decode(data.data);
let newPng3 = UPNG.encode(UPNG.toRGBA8(pngDecode3), pngDecode3.width, pngDecode3.height, 0)
let dataObj3 = { type: 'writePngAsync', data: newPng3, receiver: data.data}
arkWorker.parentPort.postMessage(dataObj3, [newPng3, data.data]);
console.log('writePngAsync worker to main')
break;
case 'normal':
arkWorker.parentPort.postMessage(data);

View File

@ -61,8 +61,7 @@ export class Pngj {
}
readPngImageAsync(worker:ArkWorker.Worker, pngBuffer: ArrayBuffer, callback:PngCallback<ArrayBuffer, any>){
console.log('readPngImageAsync start')
// let worker = new ArkWorker.Worker('workers/worker1.js', { type: 'classic', name: 'readPngImageAsync'})
worker.onerror = function(data){
}
@ -89,13 +88,12 @@ export class Pngj {
var obj = { type: 'readPngImageAsync', data:pngBuffer}
worker.postMessage(obj, [pngBuffer])
console.log('readPngImageAsync to worker')
}
writePngWithStringAsync(worker:ArkWorker.Worker,addInfo:string, pngBuffer:ArrayBuffer, callback:PngCallback<ArrayBuffer,any>) {
console.log('writePngWithStringAsync start')
// let worker = new ArkWorker.Worker('workers/worker1.js', { type: 'classic', name: 'writePngWithStringAsync'})
worker.onerror = function(data){
}
@ -122,13 +120,12 @@ export class Pngj {
var obj = { type: 'writePngWithStringAsync', data:pngBuffer, info: addInfo}
worker.postMessage(obj, [pngBuffer])
console.log('writePngWithStringAsync to worker')
}
writePngAsync(worker:ArkWorker.Worker,pngBuffer:ArrayBuffer, callback:PngCallback<ArrayBuffer,any>) {
console.log('writePngAsync start')
// let worker = new ArkWorker.Worker('workers/worker1.js', { type: 'classic', name: 'writePngAsync'})
worker.onerror = function(data){
}
@ -155,7 +152,7 @@ export class Pngj {
var obj = { type: 'writePngAsync', data:pngBuffer}
worker.postMessage(obj, [pngBuffer])
console.log('writePngAsync to worker')
}
}

View File

@ -489,7 +489,7 @@ export class RequestManager {
this.mDiskCacheProxy.putValue(this.options.generateDataKey, arraybuffer)
})
.catch((err) => {
console.log("err=" + err);
console.log("save diskLruCache error=" + err);
})
} else {
// 进行变换