diff --git a/OAT.xml b/OAT.xml index 0254278..d3a6183 100644 --- a/OAT.xml +++ b/OAT.xml @@ -16,6 +16,13 @@ + + + + + + + diff --git a/build-profile.json5 b/build-profile.json5 index 1021077..daded0e 100644 --- a/build-profile.json5 +++ b/build-profile.json5 @@ -5,9 +5,9 @@ "products": [ { "name": "default", - "signingConfig": "default", + "signingConfig": "default" } - ] + ], }, "modules": [ { @@ -25,10 +25,6 @@ { "name": "imageknife", "srcPath": "./imageknife" - }, - { - "name": "disklrucache", - "srcPath": "./disklrucache" } ] } \ No newline at end of file diff --git a/disklrucache/.gitignore b/disklrucache/.gitignore deleted file mode 100644 index 4f9a973..0000000 --- a/disklrucache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -/node_modules -/.preview -/build \ No newline at end of file diff --git a/disklrucache/build-profile.json5 b/disklrucache/build-profile.json5 deleted file mode 100644 index 35dff6d..0000000 --- a/disklrucache/build-profile.json5 +++ /dev/null @@ -1,5 +0,0 @@ -{ - "apiType": "stageMode", - "buildOption": { - } -} diff --git a/disklrucache/hvigorfile.js b/disklrucache/hvigorfile.js deleted file mode 100644 index 42ed4b4..0000000 --- a/disklrucache/hvigorfile.js +++ /dev/null @@ -1,3 +0,0 @@ -// Script for compiling build behavior. It is built in the build plug-in and cannot be modified currently. -module.exports = require('@ohos/hvigor-ohos-plugin').harTasks - diff --git a/disklrucache/index.ets b/disklrucache/index.ets deleted file mode 100644 index d2d2c2f..0000000 --- a/disklrucache/index.ets +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright (C) 2021 Huawei Device Co., Ltd. - * Licensed under the Apache License, Version 2.0 (the 'License'); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http:// www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an 'AS IS' BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * disklrucache - */ -export * from './src/main/ets/components/disklrucache/DiskLruCache' -export * from './src/main/ets/components/disklrucache/DiskCacheEntry' diff --git a/disklrucache/package.json b/disklrucache/package.json deleted file mode 100644 index 492598e..0000000 --- a/disklrucache/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "license":"ISC", - "types":"", - "devDependencies":{ - "@types/spark-md5":"^3.0.2" - }, - "name":"@ohos/disklrucache", - "description":"a npm package which contains arkUI2.0 page", - "ohos":{ - "org":"" - }, - "main":"index.ets", - "repository":{}, - "version":"1.0.0", - "dependencies":{ - "spark-md5":"^3.0.2" - } -} \ No newline at end of file diff --git a/disklrucache/src/main/ets/components/disklrucache/CustomMap.ts b/disklrucache/src/main/ets/components/disklrucache/CustomMap.ts deleted file mode 100644 index 6e8b05a..0000000 --- a/disklrucache/src/main/ets/components/disklrucache/CustomMap.ts +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright (C) 2021 Huawei Device Co., Ltd. - * Licensed under the Apache License, Version 2.0 (the 'License'); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http:// www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an 'AS IS' BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -export class CustomMap { - map: Map = new Map() - - /** - * 获取键对应的值 - * - * @param key 键值 - */ - get(key: K): V | undefined { - if (key == null) { - throw new Error('key is null,checking the parameter'); - } - return this.map.get(key) - } - - /** - * 是否含有key的缓存 - * - * @param key 键值 - */ - hasKey(key: K) { - if (key == null) { - throw new Error('key is null,checking the parameter'); - } - return this.map.has(key) - } - - /** - * 添加键值对 - * - * @param key 键值 - * @param value 键对应的值 - */ - put(key: K, value: V): V | undefined { - if (key == null || value == null) { - throw new Error('key or value is invalid,checking the parameter'); - } - let pre = this.map.get(key) - if (this.hasKey(key)) { - this.map.delete(key) - } - this.map.set(key, value); - return pre - } - - /** - * 去除键值,(去除键数据中的键名及对应的值) - * - * @param key 键值 - */ - remove(key: K): boolean { - if (key == null) { - throw new Error('key is null,checking the parameter'); - } - return this.map.delete(key) - } - - /** - * 获取最先存储的数据的key - */ - getFirstKey(): K { // keys()可以遍历后需要优化put()方法,暂时仅获取index=0的key - return this.map.keys().next().value - } - - /** - * 判断键值元素是否为空 - */ - isEmpty(): boolean { - return this.map.size == 0; - } - - /** - * 获取键值元素大小 - */ - size(): number { - return this.map.size; - } - - /** - * 遍历Map,执行处理函数. 回调函数 function(key,value,index){..} - * - * @param fn 遍历回调方法 - */ - each(fn) { - this.map.forEach(fn) - } - - /** - * 清除键值对 - */ - clear() { - this.map.clear() - } - - /** - * 遍历key - */ - keys(): IterableIterator { - return this.map.keys() - } -} \ No newline at end of file diff --git a/disklrucache/src/main/ets/components/disklrucache/DiskCacheEntry.ts b/disklrucache/src/main/ets/components/disklrucache/DiskCacheEntry.ts deleted file mode 100644 index ad2625d..0000000 --- a/disklrucache/src/main/ets/components/disklrucache/DiskCacheEntry.ts +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (C) 2021 Huawei Device Co., Ltd. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -export class DiskCacheEntry { - // 缓存的key - key: string = '' - - // 缓存文件大小 - length: number = 0 - - constructor(key: string, length?: number) { - this.key = key - this.length = length - } - - setKey(key: string) { - this.key = key - } - - getKey(): string { - return this.key - } - - setLength(length: number) { - this.length = length - } - - getLength(): number { - return this.length - } - - toString(): string { - return this.key + ' - ' + this.length - } -} \ No newline at end of file diff --git a/disklrucache/src/main/ets/components/disklrucache/DiskLruCache.ts b/disklrucache/src/main/ets/components/disklrucache/DiskLruCache.ts deleted file mode 100644 index f36800c..0000000 --- a/disklrucache/src/main/ets/components/disklrucache/DiskLruCache.ts +++ /dev/null @@ -1,444 +0,0 @@ -/* - * Copyright (C) 2021 Huawei Device Co., Ltd. - * Licensed under the Apache License, Version 2.0 (the 'License'); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an 'AS IS' BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import fileio from '@ohos.fileio' -import { CustomMap } from './CustomMap' -import { FileUtils } from './FileUtils' -import { FileReader } from './FileReader' -import { DiskCacheEntry } from './DiskCacheEntry' -import SparkMD5 from "spark-md5" - - -export class DiskLruCache { - // 默认缓存数据最大值 - private static readonly DEFAULT_MAX_SIZE: number = 30 * 1024 * 1024 - - // 缓存journal文件名称 - private static readonly journal: string = 'journal' - - // 缓存journal备份文件名称 - private static readonly journalTemp: string = 'journal_temp' - - // 备份文件save标识符 - private static readonly SAVE: string = 'save' - - // 备份文件read标识符 - private static readonly READ: string = 'read' - - // 备份文件remove标识符 - private static readonly REMOVE: string = 'remove' - - // 缓存文件路径地址 - private path: string = '' - - // 缓存journal文件路径 - private journalPath: string = '' - - // 缓存journal备份文件路径 - private journalPathTemp: string = '' - - // 缓存数据最大值 - private maxSize: number = DiskLruCache.DEFAULT_MAX_SIZE - - // 当前缓存数据值 - private size: number = 0 - - // 缓存数据集合 - private cacheMap: CustomMap = new CustomMap() - - private constructor(path: string, maxSize: number) { - this.path = path - this.maxSize = maxSize - this.journalPath = path + DiskLruCache.journal - this.journalPathTemp = path + DiskLruCache.journalTemp - } - - /** - * 打开path中的缓存,如果不存在缓存,则创建新缓存 - * - * @param path 缓存文件路径地址 - * @param maxSize 缓存数据最大值,默认值为3M - */ - public static create(path: string, maxSize?: number): DiskLruCache { - if (!!!path) { - throw new Error('DiskLruCache create path is empty, checking the parameter'); - } - if (!!!maxSize) { - maxSize = DiskLruCache.DEFAULT_MAX_SIZE - } - if (maxSize <= 0) { - throw new Error("DiskLruCache create maxSize <= 0, checking the parameter"); - } - if (!FileUtils.getInstance().existFolder(path)) { - FileUtils.getInstance().createFolder(path, true) - } - if (path.endsWith(FileUtils.SEPARATOR)) { - path = path - } else { - path = path + FileUtils.SEPARATOR - } - let journalPath = path + DiskLruCache.journal - let journalPathTemp = path + DiskLruCache.journalTemp - - // 判断日志文件是否存在,如果没有初始化创建 - if (FileUtils.getInstance().exist(journalPath)) { - let stat = fileio.statSync(journalPath) - if (stat.size > 0) { - FileUtils.getInstance().createFile(journalPathTemp) - FileUtils.getInstance().copyFile(journalPath, journalPathTemp) - let diskLruCache: DiskLruCache = new DiskLruCache(path, maxSize) - diskLruCache.readJournal(journalPathTemp) - diskLruCache.resetJournalFile() - return diskLruCache - } else { - return new DiskLruCache(path, maxSize) - } - } else { - FileUtils.getInstance().createFile(journalPath) - return new DiskLruCache(path, maxSize) - } - } - - /** - * 处理journal文件数据 - * - * @param line 日志行字符串 - */ - private dealWithJournal(line: string) { - let filePath = '' - try { - let lineData = line.split(' ') - if (lineData.length > 1) { - if (lineData[0] != DiskLruCache.REMOVE) { - filePath = this.path + lineData[1] - let fileStat = fileio.statSync(filePath) - if (fileStat.isFile() && fileStat.size > 0) { - this.size = this.size + fileStat.size - FileUtils.getInstance().writeData(this.journalPath, line + FileReader.LF) - this.putCacheMap(lineData[1], fileStat.size) - } - } else { - if (this.cacheMap.hasKey(lineData[1])) { - let cacheEntry: DiskCacheEntry = this.cacheMap.get(lineData[1]) - this.size = this.size - cacheEntry.getLength() - this.cacheMap.remove(lineData[1]) - } - } - } - } catch (e) { - console.error('DiskLruCache - dealWithJournal e ' + e) - } - } - - /** - * 设置disk缓存最大数据值 - * - * @param max 缓存数据最大值 - */ - setMaxSize(max: number) { - this.maxSize = max - this.trimToSize() - } - - /** - * 存储disk缓存数据 - * - * @param key 键值 - * @param content 文件内容 - */ - set(key: string, content: ArrayBuffer) { - if (!!!key) { - throw new Error('key is null, checking the parameter') - } - if (content == null || content.byteLength == 0) { - throw new Error('content is null, checking the parameter') - } - let fileSize = content.byteLength - key = SparkMD5.hash(key) - this.size = this.size + fileSize - this.putCacheMap(key, fileSize) - FileUtils.getInstance().writeData(this.journalPath, DiskLruCache.SAVE + ' ' + key + FileReader.LF) - this.trimToSize() - let tempPath = this.path + key - FileUtils.getInstance().writeNewFile(tempPath, content) - } - - /** - * 异步存储disk缓存数据 - * - * @param key 键值 - * @param content 文件内容 - */ - async setAsync(key: string, content: ArrayBuffer): Promise { - if (!!!key) { - throw new Error('key is null, checking the parameter') - } - if (content == null || content.byteLength == 0) { - throw new Error('content is null, checking the parameter') - } - let fileSize = content.byteLength - key = SparkMD5.hash(key) - this.size = this.size + fileSize - console.log('setAsync fileSize ='+ fileSize +' all size ='+this.size + ' max size ='+this.maxSize); - this.putCacheMap(key, fileSize) - await FileUtils.getInstance().writeDataAsync(this.journalPath, DiskLruCache.SAVE + ' ' + key + FileReader.LF) - this.trimToSize() - let tempPath = this.path + key - await FileUtils.getInstance().writeNewFileAsync(tempPath, content) - } - - /** - * 存储disk缓存数据 - * - * @param key key 键值 - * @param path 文件路径 - */ - setFileByPath(key: string, path: string) { - if (!!!key) { - throw new Error('key is null, checking the parameter') - } - if (!!!path || !FileUtils.getInstance().exist(path)) { - throw new Error('path is null or no exist file, checking the parameter') - } - let fileSize = FileUtils.getInstance().getFileSize(path) - if (fileSize == -1) { - throw new Error('path getFileSize error ') - } - key = SparkMD5.hash(key) - this.size = this.size + fileSize - this.putCacheMap(key, fileSize) - FileUtils.getInstance().writeData(this.journalPath, DiskLruCache.SAVE + ' ' + key + FileReader.LF) - this.trimToSize() - fileSize = FileUtils.getInstance().getFileSize(path) - FileUtils.getInstance().copyFile(path, this.path + key) - } - - /** - * 异步存储disk缓存数据 - * - * @param key key 键值 - * @param path 文件路径 - */ - async setFileByPathAsync(key: string, path: string): Promise { - if (!!!key) { - throw new Error('key is null, checking the parameter') - } - if (!!!path || !FileUtils.getInstance().exist(path)) { - throw new Error('path is null or no exist file, checking the parameter') - } - let fileSize = FileUtils.getInstance().getFileSize(path) - if (fileSize == -1) { - throw new Error('path getFileSize error ') - } - key = SparkMD5.hash(key) - this.size = this.size + fileSize - this.putCacheMap(key, fileSize) - await FileUtils.getInstance().writeDataAsync(this.journalPath, DiskLruCache.SAVE + ' ' + key + FileReader.LF) - this.trimToSize() - fileSize = FileUtils.getInstance().getFileSize(path) - await FileUtils.getInstance().copyFileAsync(path, this.path + key) - } - - /** - * 获取key缓存数据 - * - * @param key key 键值 - */ - get(key: string): ArrayBuffer { - if (!!!key) { - throw new Error('key is null,checking the parameter'); - } - key = SparkMD5.hash(key) - let path = this.path + key; - if (FileUtils.getInstance().exist(path)) { - let ab: ArrayBuffer = FileUtils.getInstance().readFile(path) - this.putCacheMap(key, ab.byteLength) - FileUtils.getInstance().writeData(this.journalPath, DiskLruCache.READ + ' ' + key + FileReader.LF) - return ab - } else { - return null; - } - } - - /** - * 异步获取key缓存数据 - * - * @param key 键值 - */ - async getAsync(key: string): Promise { - if (!!!key) { - throw new Error('key is null,checking the parameter'); - } - key = SparkMD5.hash(key) - let path = this.path + key; - if (FileUtils.getInstance().exist(path)) { - let ab: ArrayBuffer = await FileUtils.getInstance().readFileAsync(path) - this.putCacheMap(key, ab.byteLength) - await FileUtils.getInstance().writeDataAsync(this.journalPath, DiskLruCache.READ + ' ' + key + FileReader.LF) - return ab - } else { - return null; - } - } - - /** - * 获取key缓存数据绝对路径 - * - * @param key 键值 - */ - getFileToPath(key: string): string { - if (!!!key) { - throw new Error('key is null,checking the parameter'); - } - key = SparkMD5.hash(key); - let path = this.path + key; - if (FileUtils.getInstance().exist(path)) { - FileUtils.getInstance().writeData(this.journalPath, DiskLruCache.READ + ' ' + key + FileReader.LF); - return path - } else { - return null - } - } - - /** - * 异步获取key缓存数据绝对路径 - * - * @param key 键值 - */ - async getFileToPathAsync(key: string): Promise { - if (!!!key) { - throw new Error('key is null,checking the parameter'); - } - key = SparkMD5.hash(key); - let path = this.path + key; - if (FileUtils.getInstance().exist(path)) { - await FileUtils.getInstance().writeDataAsync(this.journalPath, DiskLruCache.READ + ' ' + key + FileReader.LF); - return path - } else { - return null - } - } - - /** - * 删除key缓存数据 - * - * @param key 键值 - */ - deleteCacheDataByKey(key: string): DiskCacheEntry { - if (!!!key) { - throw new Error('key is null,checking the parameter'); - } - key = SparkMD5.hash(key) - let path = this.path + key; - if (FileUtils.getInstance().exist(path)) { - let ab = FileUtils.getInstance().readFile(path) - this.size = this.size - ab.byteLength - this.cacheMap.remove(key) - FileUtils.getInstance().writeData(this.journalPath, DiskLruCache.REMOVE + ' ' + key + FileReader.LF) - FileUtils.getInstance().deleteFile(path) - } - return this.cacheMap.get(key) - } - - /** - *遍历当前的磁盘缓存数据 - * - * @param fn 遍历后方法回调 - */ - foreachDiskLruCache(fn) { - this.cacheMap.each(fn) - } - - /** - * 清除所有disk缓存数据 - */ - cleanCacheData() { - this.cacheMap.each((value, key) => { - FileUtils.getInstance().deleteFile(this.path + key) - }) - FileUtils.getInstance().deleteFile(this.journalPath) - this.cacheMap.clear() - this.size = 0 - } - - /** - * 重置journal文件数据 - */ - private resetJournalFile() { - FileUtils.getInstance().clearFile(this.journalPath) - for (let key of this.cacheMap.keys()) { - FileUtils.getInstance().writeData(this.journalPath, DiskLruCache.SAVE + ' ' + key + FileReader.LF) - } - } - - /** - * 读取journal文件的缓存数据 - * - * @param path 日志缓存文件路径地址 - */ - private readJournal(path: string) { - let fileReader = new FileReader(path) - let line: string = '' - while (!fileReader.isEnd()) { - line = fileReader.readLine() - line = line.replace(FileReader.LF, '').replace(FileReader.CR, '') - this.dealWithJournal(line) - } - fileReader.close() - FileUtils.getInstance().deleteFile(this.journalPathTemp) - this.trimToSize() - } - - /** - * 缓存数据map集合 - * - * @param key 键值 - * @param length 缓存文件大小 - */ - private putCacheMap(key: string, length?: number) { - if (length > 0) { - console.log('key = '+key) - console.log('value length= '+ length) - this.cacheMap.put(key, new DiskCacheEntry(key, length)) - } else { - this.cacheMap.put(key, new DiskCacheEntry(key)) - } - } - - /** - * 根据LRU算法删除多余缓存数据 - */ - private trimToSize() { - - while (this.size > this.maxSize) { - let tempKey: string = this.cacheMap.getFirstKey() - let fileSize = FileUtils.getInstance().getFileSize(this.path + tempKey) - if (fileSize > 0) { - this.size = this.size - fileSize - } - console.log('trimToSize fileSize ='+ fileSize +' all size ='+this.size + ' max size ='+this.maxSize); - FileUtils.getInstance().deleteFile(this.path + tempKey) - this.cacheMap.remove(tempKey) - FileUtils.getInstance().writeData(this.journalPath, DiskLruCache.REMOVE + ' ' + tempKey + FileReader.LF) - } - } - - getPath(){ - return this.path; - } - - getCacheMap(){ - return this.cacheMap; - } -} \ No newline at end of file diff --git a/disklrucache/src/main/ets/components/disklrucache/FileReader.ts b/disklrucache/src/main/ets/components/disklrucache/FileReader.ts deleted file mode 100644 index 42b2ddf..0000000 --- a/disklrucache/src/main/ets/components/disklrucache/FileReader.ts +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (C) 2021 Huawei Device Co., Ltd. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import fileio from '@ohos.fileio' - -export class FileReader { - // 换行符 - static readonly LF: string = '\n' - - // CR符 - static readonly CR: string = '\r' - - // 文件大小 - fileLength: number = 0 - - // 读取的长度 - length: number = 0 - - // 读写stream - stream: any = null - - // 缓存buf - buf: ArrayBuffer = new ArrayBuffer(1) - - /** - * 读取文件行 - * - * @param path 文件路径 - */ - constructor(path: string) { - if (!path || Object.keys(path).length == 0) { - return - } - try { - this.stream = fileio.createStreamSync(path, 'r+'); - let stat = fileio.statSync(path) - this.fileLength = stat.size - } catch (e) { - } - } - - /** - * 循环读取文件数据 - */ - readLine(): string { - let line = '' - while (this.length <= this.fileLength) { - this.stream.readSync(this.buf, { position: this.length }) - this.length++ - let temp = String.fromCharCode.apply(null, new Uint8Array(this.buf)); - line = line + temp - if (temp == FileReader.LF || temp == FileReader.CR) { - return line - } - } - return line - } - - /** - * 判断文件是否结束 - */ - isEnd() { - return this.fileLength <= 0 || this.length == this.fileLength - } - - /** - * 关闭stream - */ - close() { - this.stream.closeSync() - } -} \ No newline at end of file diff --git a/disklrucache/src/main/ets/components/disklrucache/FileUtils.ts b/disklrucache/src/main/ets/components/disklrucache/FileUtils.ts deleted file mode 100644 index 1038004..0000000 --- a/disklrucache/src/main/ets/components/disklrucache/FileUtils.ts +++ /dev/null @@ -1,240 +0,0 @@ -/* - * Copyright (C) 2021 Huawei Device Co., Ltd. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import fileio from '@ohos.fileio' - -export class FileUtils { - private static sInstance: FileUtils - static readonly SEPARATOR: string = '/' - base64Str: string = '' - - /** - * 单例实现FileUtils类 - */ - public static getInstance(): FileUtils { - if (!this.sInstance) { - this.sInstance = new FileUtils(); - } - return this.sInstance; - } - - private constructor() { - } - - /** - * 新建文件 - * - * @param path 文件绝对路径及文件名 - * @return number 文件句柄id - */ - createFile(path: string): number { - return fileio.openSync(path, 0o100, 0o664) - } - - /** - * 删除文件 - * - * @param path 文件绝对路径及文件名 - */ - deleteFile(path: string): void { - fileio.unlinkSync(path); - } - - /** - * 拷贝文件 - * - * @param src 文件绝对路径及文件名 - * @param dest 拷贝到对应的路径 - */ - copyFile(src: string, dest: string) { - fileio.copyFileSync(src, dest); - } - - /** - * 异步拷贝文件 - * - * @param src 文件绝对路径及文件名 - * @param dest 拷贝到对应的路径 - */ - async copyFileAsync(src: string, dest: string): Promise { - await fileio.copyFile(src, dest); - } - - /** - * 清空已有文件数据 - * - * @param path 文件绝对路径 - */ - clearFile(path: string): number { - return fileio.openSync(path, 0o1000) - } - - /** - * 向path写入数据 - * - * @param path 文件绝对路径 - * @param content 文件内容 - */ - writeData(path: string, content: ArrayBuffer | string) { - let fd = fileio.openSync(path, 0o102, 0o664) - let stat = fileio.statSync(path) - fileio.writeSync(fd, content, { position: stat.size }) - fileio.closeSync(fd) - } - - /** - * 异步向path写入数据 - * - * @param path 文件绝对路径 - * @param content 文件内容 - */ - async writeDataAsync(path: string, content: ArrayBuffer | string): Promise { - let fd = await fileio.open(path, 0o102, 0o664) - let stat = await fileio.stat(path) - await fileio.write(fd, content, { position: stat.size }) - await fileio.close(fd) - } - - /** - * 判断path文件是否存在 - * - * @param path 文件绝对路径 - */ - exist(path: string): boolean { - try { - let stat = fileio.statSync(path) - return stat.isFile() - } catch (e) { - console.error("FileUtils exist e " + e) - return false - } - } - - /** - * 向path写入数据 - * - * @param path 文件绝对路径 - * @param data 文件内容 - */ - writeNewFile(path: string, data: ArrayBuffer) { - this.createFile(path) - this.writeFile(path, data) - } - - /** - * 向path写入数据 - * - * @param path 文件绝对路径 - * @param data 文件内容 - */ - async writeNewFileAsync(path: string, data: ArrayBuffer): Promise { - await fileio.open(path, 0o100, 0o664) - let fd = await fileio.open(path, 0o102, 0o664) - await fileio.ftruncate(fd) - await fileio.write(fd, data) - await fileio.fsync(fd) - await fileio.close(fd) - } - - /** - * 获取path的文件大小 - * - * @param path 文件绝对路径 - */ - getFileSize(path: string): number { - try { - let stat = fileio.statSync(path) - return stat.size - } catch (e) { - console.error("FileUtils getFileSize e " + e) - return -1 - } - } - - /** - * 读取路径path的文件 - * - * @param path 文件绝对路径 - */ - readFile(path: string): ArrayBuffer { - let fd = fileio.openSync(path, 0o2); - let length = fileio.statSync(path).size - let buf = new ArrayBuffer(length); - fileio.readSync(fd, buf) - return buf - } - - /** - * 读取路径path的文件 - * - * @param path 文件绝对路径 - */ - async readFileAsync(path: string): Promise { - let stat = await fileio.stat(path); - let fd = await fileio.open(path, 0o2); - let length = stat.size; - let buf = new ArrayBuffer(length); - await fileio.read(fd, buf); - return buf - } - - /** - * 创建文件夹 - * - * @param path 文件夹绝对路径,只有是权限范围内的路径,可以生成 - * @param recursive - */ - createFolder(path: string, recursive?: boolean) { - if (recursive) { - if (!this.existFolder(path)) { - let lastInterval = path.lastIndexOf(FileUtils.SEPARATOR) - if (lastInterval == 0) { - return - } - let newPath = path.substring(0, lastInterval) - this.createFolder(newPath, true) - if (!this.existFolder(path)) { - fileio.mkdirSync(path) - } - } - } else { - if (!this.existFolder(path)) { - fileio.mkdirSync(path) - } - } - } - - /** - * 判断文件夹是否存在 - * - * @param path 文件夹绝对路径 - */ - existFolder(path: string): boolean { - try { - let stat = fileio.statSync(path) - return stat.isDirectory() - } catch (e) { - console.error("FileUtils folder exist e " + e) - return false - } - } - - private writeFile(path: string, content: ArrayBuffer | string) { - let fd = fileio.openSync(path, 0o102, 0o664) - fileio.ftruncateSync(fd) - fileio.writeSync(fd, content) - fileio.fsyncSync(fd) - fileio.closeSync(fd) - } -} \ No newline at end of file diff --git a/disklrucache/src/main/module.json5 b/disklrucache/src/main/module.json5 deleted file mode 100644 index f2c566d..0000000 --- a/disklrucache/src/main/module.json5 +++ /dev/null @@ -1,11 +0,0 @@ -{ - "module": { - "name": "disklrucache", - "type": "har", - "deviceTypes": [ - "default", - "tablet" - ], - "uiSyntax": "ets" - } -} diff --git a/disklrucache/src/main/resources/base/element/string.json b/disklrucache/src/main/resources/base/element/string.json deleted file mode 100644 index 1e76de0..0000000 --- a/disklrucache/src/main/resources/base/element/string.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "string": [ - { - "name": "page_show", - "value": "page from npm package" - } - ] -} diff --git a/entry/src/main/ets/Application/MyAbilityStage.ts b/entry/src/main/ets/Application/MyAbilityStage.ts deleted file mode 100644 index 32dfe93..0000000 --- a/entry/src/main/ets/Application/MyAbilityStage.ts +++ /dev/null @@ -1,7 +0,0 @@ -import AbilityStage from "@ohos.application.AbilityStage" - -export default class MyAbilityStage extends AbilityStage { - onCreate() { - console.log("[Demo] MyAbilityStage onCreate") - } -} \ No newline at end of file diff --git a/entry/src/main/ets/pages/compressPage.ets b/entry/src/main/ets/pages/compressPage.ets index dc00e72..b6a3a92 100644 --- a/entry/src/main/ets/pages/compressPage.ets +++ b/entry/src/main/ets/pages/compressPage.ets @@ -111,7 +111,7 @@ struct CompressPage { } private cropressRecource() { var data = new Array(); - data.push($r('app.media.photo5')) + data.push($r('app.media.jpgSample')) var rename: OnRenameListener = { reName() { return "test_1.jpg"; diff --git a/entry/src/main/ets/pages/cropImagePage.ets b/entry/src/main/ets/pages/cropImagePage.ets index bb0a02f..e76daa5 100644 --- a/entry/src/main/ets/pages/cropImagePage.ets +++ b/entry/src/main/ets/pages/cropImagePage.ets @@ -23,7 +23,7 @@ import {PixelMapPack} from '@ohos/imageknife' @Component @Entry export struct CropImagePage { - private _resource: Resource= $r('app.media.demo_org'); + private _resource: Resource= $r('app.media.jpgSample'); @State x: number = 0; @State y: number = 0; @State crop_size: number = 100; diff --git a/entry/src/main/ets/pages/cropImagePage2.ets b/entry/src/main/ets/pages/cropImagePage2.ets index 2359aed..e95a584 100644 --- a/entry/src/main/ets/pages/cropImagePage2.ets +++ b/entry/src/main/ets/pages/cropImagePage2.ets @@ -29,23 +29,23 @@ export struct CropImagePage2 { @State options1: PixelMapCrop.Options = new PixelMapCrop.Options(); @State cropTap: boolean = false; @State pack: PixelMapPack = new PixelMapPack(); - @State width: number = 0; - @State height: number = 0; + @State width1: number = 0; + @State height1: number = 0; @State _rotate: number = 0; @State _scale: number = 1; - private _resource: Resource = $r('app.media.bmpNet'); + private _resource: Resource = $r('app.media.bmpSample'); build() { Column() { Button('点击解析图片') .onClick(() => { - globalThis.ImageKnife.getImageKnifeContext().resourceManager.getMedia($r('app.media.bmpNet').id) + globalThis.ImageKnife.getImageKnifeContext().resourceManager.getMedia($r('app.media.bmpSample').id) .then(data => { let arrayBuffer = FileUtils.getInstance().uint8ArrayToBuffer(data); let optionx = new PixelMapCrop.Options(); - optionx.setWidth(600) - .setHeight(400) + optionx.setWidth(800) + .setHeight(800) .setCropFunction((err, pixelmap, sx, sy) => { console.log('PMC setCropFunction callback') if (err) { @@ -54,8 +54,8 @@ export struct CropImagePage2 { let pack1 = new PixelMapPack(); pack1.pixelMap = pixelmap; this.pack = pack1; - this.width = sx * px2vp(1); - this.height = sy * px2vp(1); + this.width1 = sx * px2vp(1); + this.height1 = sy * px2vp(1); } @@ -77,13 +77,13 @@ export struct CropImagePage2 { Image(this.pack.pixelMap) - .width(this.width) - .height(this.height) + .width(this.width1) + .height(this.height1) .objectFit(ImageFit.Contain) .rotate({ z: 1, - centerX: this.width / 2, - centerY: this.height / 2, + centerX: this.width1 / 2, + centerY: this.height1 / 2, angle: this._rotate }) .scale({ x: this._scale, y: this._scale, z: 1.0 }) diff --git a/entry/src/main/ets/pages/frescoRetryTestCasePage.ets b/entry/src/main/ets/pages/frescoRetryTestCasePage.ets index a251039..ba8639d 100644 --- a/entry/src/main/ets/pages/frescoRetryTestCasePage.ets +++ b/entry/src/main/ets/pages/frescoRetryTestCasePage.ets @@ -26,6 +26,7 @@ struct FrescoImageTestCasePage { size: { width: 300, height: 300 }, placeholderSrc: $r('app.media.icon_loading'), errorholderSrc: $r('app.media.icon_failed'), + retryholderSrc: $r('app.media.icon_retry'), displayProgress: true, animateDuration: 300, retryLoad:true @@ -36,6 +37,7 @@ struct FrescoImageTestCasePage { size: { width: 300, height: 300 }, placeholderSrc: $r('app.media.icon_loading'), errorholderSrc: $r('app.media.icon_failed'), + retryholderSrc: $r('app.media.icon_retry'), displayProgress: true, animateDuration: 300, retryLoad:true @@ -46,6 +48,7 @@ struct FrescoImageTestCasePage { size: { width: 300, height: 300 }, placeholderSrc: $r('app.media.icon_loading'), errorholderSrc: $r('app.media.icon_failed'), + retryholderSrc: $r('app.media.icon_retry'), displayProgress: true, animateDuration: 300, retryLoad:true @@ -56,6 +59,7 @@ struct FrescoImageTestCasePage { size: { width: 300, height: 300 }, placeholderSrc: $r('app.media.icon_loading'), errorholderSrc: $r('app.media.icon_failed'), + retryholderSrc: $r('app.media.icon_retry'), displayProgress: true, animateDuration: 300, retryLoad:true diff --git a/entry/src/main/ets/pages/pngjTestCasePage.ets b/entry/src/main/ets/pages/pngjTestCasePage.ets index 3114fff..ce406f6 100644 --- a/entry/src/main/ets/pages/pngjTestCasePage.ets +++ b/entry/src/main/ets/pages/pngjTestCasePage.ets @@ -42,7 +42,7 @@ struct PngjTestCasePage { this.rootFolder = globalThis.ImageKnife.getImageKnifeContext().filesDir; - globalThis.ImageKnife.getImageKnifeContext().resourceManager.getMedia($r('app.media.Tomato').id) + globalThis.ImageKnife.getImageKnifeContext().resourceManager.getMedia($r('app.media.pngSample').id) .then(data => { this.pngSource = FileUtils.getInstance().uint8ArrayToBuffer(data); }) diff --git a/entry/src/main/ets/pages/testAllTypeImageKnifeComponentPage.ets b/entry/src/main/ets/pages/testAllTypeImageKnifeComponentPage.ets index 3a8eb84..4b065d7 100644 --- a/entry/src/main/ets/pages/testAllTypeImageKnifeComponentPage.ets +++ b/entry/src/main/ets/pages/testAllTypeImageKnifeComponentPage.ets @@ -24,8 +24,8 @@ struct TestAllTypeImageKnifeComponentPage { { loadSrc: $r('app.media.jpgSample'), size: { width: 300, height: 300 }, - placeholderSrc: $r('app.media.Tomato'), - errorholderSrc: $r('app.media.picture1'), + placeholderSrc: $r('app.media.jpgSample'), + errorholderSrc: $r('app.media.pngSample'), transform: { transformType:TransformType.RotateImageTransformation, rotateImage:180 @@ -35,8 +35,8 @@ struct TestAllTypeImageKnifeComponentPage { { loadSrc: $r('app.media.pngSample'), size: { width: 300, height: 300 }, - placeholderSrc: $r('app.media.Tomato'), - errorholderSrc: $r('app.media.picture1'), + placeholderSrc: $r('app.media.jpgSample'), + errorholderSrc: $r('app.media.pngSample'), transform: { transformType:TransformType.RotateImageTransformation, rotateImage:180 @@ -46,8 +46,8 @@ struct TestAllTypeImageKnifeComponentPage { { loadSrc: $r('app.media.jpgSample'), size: { width: 300, height: 300 }, - placeholderSrc: $r('app.media.Tomato'), - errorholderSrc: $r('app.media.picture1'), + placeholderSrc: $r('app.media.jpgSample'), + errorholderSrc: $r('app.media.pngSample'), transform: { transformType:TransformType.RotateImageTransformation, rotateImage:180 @@ -57,8 +57,8 @@ struct TestAllTypeImageKnifeComponentPage { { loadSrc: $r('app.media.svgSample'), size: { width: 300, height: 300 }, - placeholderSrc: $r('app.media.Tomato'), - errorholderSrc: $r('app.media.picture1'), + placeholderSrc: $r('app.media.jpgSample'), + errorholderSrc: $r('app.media.pngSample'), transform: { transformType:TransformType.RotateImageTransformation, rotateImage:180 @@ -68,8 +68,8 @@ struct TestAllTypeImageKnifeComponentPage { { loadSrc: $r('app.media.bmpSample'), size: { width: 300, height: 300 }, - placeholderSrc: $r('app.media.Tomato'), - errorholderSrc: $r('app.media.picture1'), + placeholderSrc: $r('app.media.jpgSample'), + errorholderSrc: $r('app.media.pngSample'), transform: { transformType:TransformType.RotateImageTransformation, rotateImage:180 diff --git a/entry/src/main/ets/pages/transformPixelMapPage.ets b/entry/src/main/ets/pages/transformPixelMapPage.ets index f87d5e3..f03b286 100644 --- a/entry/src/main/ets/pages/transformPixelMapPage.ets +++ b/entry/src/main/ets/pages/transformPixelMapPage.ets @@ -39,7 +39,7 @@ import {PixelMapPack} from '@ohos/imageknife' */ let mRotate: number = 0; //let mUrl = "https://hbimg.huabanimg.com/cc6af25f8d782d3cf3122bef4e61571378271145735e9-vEVggB" -let mUrl = $r('app.media.check_big'); +let mUrl = $r('app.media.pngSample'); @Entry @Component @@ -486,7 +486,7 @@ struct TransformPixelMapPage { */ centerCrop() { var imageKnifeOption = new RequestOption(); - imageKnifeOption.load($r('app.media.photo5')) + imageKnifeOption.load($r('app.media.jpgSample')) // imageKnifeOption.load(mUrl) .addListener((err, data) => { let result = new PixelMapPack(); diff --git a/entry/src/main/ets/pages/transformTestCasePage.ets b/entry/src/main/ets/pages/transformTestCasePage.ets index 5f73e41..1af2387 100644 --- a/entry/src/main/ets/pages/transformTestCasePage.ets +++ b/entry/src/main/ets/pages/transformTestCasePage.ets @@ -25,8 +25,8 @@ struct Index { { loadSrc: "https://thirdwx.qlogo.cn/mmopen/vi_32/DYAIOgq83ericA1Mv66TwicuYOtbDMBcUhv1aa9RJBeAn9uURfcZD0AUGrJebAn1g2AjN0vb2E1XTET7fTuLBNmA/132", size: { width: 300, height: 300 }, - placeholderSrc: $r('app.media.Tomato'), - errorholderSrc: $r('app.media.picture1'), + placeholderSrc: $r('app.media.jpgSample'), + errorholderSrc: $r('app.media.pngSample'), transform: { transformType:TransformType.RotateImageTransformation, rotateImage:180 @@ -36,8 +36,8 @@ struct Index { { loadSrc: "https://thirdwx.qlogo.cn/mmopen/vi_32/DYAIOgq83ericA1Mv66TwicuYOtbDMBcUhv1aa9RJBeAn9uURfcZD0AUGrJebAn1g2AjN0vb2E1XTET7fTuLBNmA/132", size: { width: 300, height: 300 }, - placeholderSrc: $r('app.media.Tomato'), - errorholderSrc: $r('app.media.picture1'), + placeholderSrc: $r('app.media.jpgSample'), + errorholderSrc: $r('app.media.pngSample'), transform: { transformType:TransformType.RoundedCornersTransformation, roundedCorners:{ @@ -53,8 +53,8 @@ struct Index { { loadSrc: $r('app.media.pngSample'), size: { width: 300, height: 300 }, - placeholderSrc: $r('app.media.Tomato'), - errorholderSrc: $r('app.media.picture1'), + placeholderSrc: $r('app.media.jpgSample'), + errorholderSrc: $r('app.media.pngSample'), transform: { transformType:TransformType.RotateImageTransformation, rotateImage:180 @@ -64,8 +64,8 @@ struct Index { { loadSrc: $r('app.media.jpgSample'), size: { width: 300, height: 300 }, - placeholderSrc: $r('app.media.Tomato'), - errorholderSrc: $r('app.media.picture1'), + placeholderSrc: $r('app.media.jpgSample'), + errorholderSrc: $r('app.media.pngSample'), transform: { transformType:TransformType.RoundedCornersTransformation, roundedCorners:{ diff --git a/entry/src/main/resources/base/media/Avocado.png b/entry/src/main/resources/base/media/Avocado.png deleted file mode 100644 index 33dfdd7..0000000 Binary files a/entry/src/main/resources/base/media/Avocado.png and /dev/null differ diff --git a/entry/src/main/resources/base/media/Back.png b/entry/src/main/resources/base/media/Back.png index 2b0806c..e4d200e 100644 Binary files a/entry/src/main/resources/base/media/Back.png and b/entry/src/main/resources/base/media/Back.png differ diff --git a/entry/src/main/resources/base/media/Blueberry.png b/entry/src/main/resources/base/media/Blueberry.png deleted file mode 100644 index a07421e..0000000 Binary files a/entry/src/main/resources/base/media/Blueberry.png and /dev/null differ diff --git a/entry/src/main/resources/base/media/Crab.png b/entry/src/main/resources/base/media/Crab.png deleted file mode 100644 index b71a627..0000000 Binary files a/entry/src/main/resources/base/media/Crab.png and /dev/null differ diff --git a/entry/src/main/resources/base/media/Cucumber.png b/entry/src/main/resources/base/media/Cucumber.png deleted file mode 100644 index 6dd7477..0000000 Binary files a/entry/src/main/resources/base/media/Cucumber.png and /dev/null differ diff --git a/entry/src/main/resources/base/media/IceCream.png b/entry/src/main/resources/base/media/IceCream.png deleted file mode 100644 index 13a8674..0000000 Binary files a/entry/src/main/resources/base/media/IceCream.png and /dev/null differ diff --git a/entry/src/main/resources/base/media/Index.png b/entry/src/main/resources/base/media/Index.png deleted file mode 100644 index 5c57223..0000000 Binary files a/entry/src/main/resources/base/media/Index.png and /dev/null differ diff --git a/entry/src/main/resources/base/media/IndexGray.png b/entry/src/main/resources/base/media/IndexGray.png deleted file mode 100644 index 942eceb..0000000 Binary files a/entry/src/main/resources/base/media/IndexGray.png and /dev/null differ diff --git a/entry/src/main/resources/base/media/Kiwi.png b/entry/src/main/resources/base/media/Kiwi.png deleted file mode 100644 index 0b4b6ed..0000000 Binary files a/entry/src/main/resources/base/media/Kiwi.png and /dev/null differ diff --git a/entry/src/main/resources/base/media/Mushroom.png b/entry/src/main/resources/base/media/Mushroom.png deleted file mode 100644 index 3e984ee..0000000 Binary files a/entry/src/main/resources/base/media/Mushroom.png and /dev/null differ diff --git a/entry/src/main/resources/base/media/NoRecord.png b/entry/src/main/resources/base/media/NoRecord.png deleted file mode 100644 index 724b2e1..0000000 Binary files a/entry/src/main/resources/base/media/NoRecord.png and /dev/null differ diff --git a/entry/src/main/resources/base/media/Onion.png b/entry/src/main/resources/base/media/Onion.png deleted file mode 100644 index 9c1c5a8..0000000 Binary files a/entry/src/main/resources/base/media/Onion.png and /dev/null differ diff --git a/entry/src/main/resources/base/media/Pitaya.png b/entry/src/main/resources/base/media/Pitaya.png deleted file mode 100644 index 2770b34..0000000 Binary files a/entry/src/main/resources/base/media/Pitaya.png and /dev/null differ diff --git a/entry/src/main/resources/base/media/Statistics.png b/entry/src/main/resources/base/media/Statistics.png deleted file mode 100644 index 28099ad..0000000 Binary files a/entry/src/main/resources/base/media/Statistics.png and /dev/null differ diff --git a/entry/src/main/resources/base/media/StatisticsGray.png b/entry/src/main/resources/base/media/StatisticsGray.png deleted file mode 100644 index 018f9c3..0000000 Binary files a/entry/src/main/resources/base/media/StatisticsGray.png and /dev/null differ diff --git a/entry/src/main/resources/base/media/Strawberry.png b/entry/src/main/resources/base/media/Strawberry.png deleted file mode 100644 index a8d2394..0000000 Binary files a/entry/src/main/resources/base/media/Strawberry.png and /dev/null differ diff --git a/entry/src/main/resources/base/media/Switch.png b/entry/src/main/resources/base/media/Switch.png deleted file mode 100644 index 51aa0fc..0000000 Binary files a/entry/src/main/resources/base/media/Switch.png and /dev/null differ diff --git a/entry/src/main/resources/base/media/Tomato.png b/entry/src/main/resources/base/media/Tomato.png deleted file mode 100644 index 93ad983..0000000 Binary files a/entry/src/main/resources/base/media/Tomato.png and /dev/null differ diff --git a/entry/src/main/resources/base/media/Walnut.png b/entry/src/main/resources/base/media/Walnut.png deleted file mode 100644 index 8187a42..0000000 Binary files a/entry/src/main/resources/base/media/Walnut.png and /dev/null differ diff --git a/entry/src/main/resources/base/media/baidu.png b/entry/src/main/resources/base/media/baidu.png deleted file mode 100644 index 510f111..0000000 Binary files a/entry/src/main/resources/base/media/baidu.png and /dev/null differ diff --git a/entry/src/main/resources/base/media/bmpNet.bmp b/entry/src/main/resources/base/media/bmpNet.bmp deleted file mode 100644 index a343af9..0000000 Binary files a/entry/src/main/resources/base/media/bmpNet.bmp and /dev/null differ diff --git a/entry/src/main/resources/base/media/bmpSample.bmp b/entry/src/main/resources/base/media/bmpSample.bmp index 94b0a91..4cbb7ee 100644 Binary files a/entry/src/main/resources/base/media/bmpSample.bmp and b/entry/src/main/resources/base/media/bmpSample.bmp differ diff --git a/entry/src/main/resources/base/media/check_big.png b/entry/src/main/resources/base/media/check_big.png deleted file mode 100644 index 3262131..0000000 Binary files a/entry/src/main/resources/base/media/check_big.png and /dev/null differ diff --git a/entry/src/main/resources/base/media/check_big_test.png b/entry/src/main/resources/base/media/check_big_test.png deleted file mode 100644 index 64059ab..0000000 Binary files a/entry/src/main/resources/base/media/check_big_test.png and /dev/null differ diff --git a/entry/src/main/resources/base/media/delete.png b/entry/src/main/resources/base/media/delete.png deleted file mode 100644 index f3c3705..0000000 Binary files a/entry/src/main/resources/base/media/delete.png and /dev/null differ diff --git a/entry/src/main/resources/base/media/deletebackground.png b/entry/src/main/resources/base/media/deletebackground.png deleted file mode 100644 index 59490bd..0000000 Binary files a/entry/src/main/resources/base/media/deletebackground.png and /dev/null differ diff --git a/entry/src/main/resources/base/media/demo_org.jpg b/entry/src/main/resources/base/media/demo_org.jpg deleted file mode 100644 index 8374680..0000000 Binary files a/entry/src/main/resources/base/media/demo_org.jpg and /dev/null differ diff --git a/entry/src/main/resources/base/media/dpgSample.dpg b/entry/src/main/resources/base/media/dpgSample.dpg index 6bf12a3..313d892 100644 Binary files a/entry/src/main/resources/base/media/dpgSample.dpg and b/entry/src/main/resources/base/media/dpgSample.dpg differ diff --git a/entry/src/main/resources/base/media/gifNet.gif b/entry/src/main/resources/base/media/gifNet.gif deleted file mode 100644 index 511f667..0000000 Binary files a/entry/src/main/resources/base/media/gifNet.gif and /dev/null differ diff --git a/entry/src/main/resources/base/media/gifSample.gif b/entry/src/main/resources/base/media/gifSample.gif index 6dab2d1..ada4075 100644 Binary files a/entry/src/main/resources/base/media/gifSample.gif and b/entry/src/main/resources/base/media/gifSample.gif differ diff --git a/entry/src/main/resources/base/media/icon_failed.png b/entry/src/main/resources/base/media/icon_failed.png index 6eadcfd..94c63eb 100644 Binary files a/entry/src/main/resources/base/media/icon_failed.png and b/entry/src/main/resources/base/media/icon_failed.png differ diff --git a/entry/src/main/resources/base/media/icon_loading.png b/entry/src/main/resources/base/media/icon_loading.png index 6eb4e9a..592d50b 100644 Binary files a/entry/src/main/resources/base/media/icon_loading.png and b/entry/src/main/resources/base/media/icon_loading.png differ diff --git a/entry/src/main/resources/base/media/icon_retry.jpg b/entry/src/main/resources/base/media/icon_retry.jpg deleted file mode 100644 index 19911b6..0000000 Binary files a/entry/src/main/resources/base/media/icon_retry.jpg and /dev/null differ diff --git a/entry/src/main/resources/base/media/icon_retry.png b/entry/src/main/resources/base/media/icon_retry.png new file mode 100644 index 0000000..e671aa8 Binary files /dev/null and b/entry/src/main/resources/base/media/icon_retry.png differ diff --git a/entry/src/main/resources/base/media/jpgNet.jpg b/entry/src/main/resources/base/media/jpgNet.jpg deleted file mode 100644 index f430168..0000000 Binary files a/entry/src/main/resources/base/media/jpgNet.jpg and /dev/null differ diff --git a/entry/src/main/resources/base/media/jpgSample.jpg b/entry/src/main/resources/base/media/jpgSample.jpg index dad4caa..c67ad12 100644 Binary files a/entry/src/main/resources/base/media/jpgSample.jpg and b/entry/src/main/resources/base/media/jpgSample.jpg differ diff --git a/entry/src/main/resources/base/media/mask_starfish.png b/entry/src/main/resources/base/media/mask_starfish.png index 3cb4bcc..34f4a7f 100644 Binary files a/entry/src/main/resources/base/media/mask_starfish.png and b/entry/src/main/resources/base/media/mask_starfish.png differ diff --git a/entry/src/main/resources/base/media/photo5.jpg b/entry/src/main/resources/base/media/photo5.jpg deleted file mode 100644 index ccf589d..0000000 Binary files a/entry/src/main/resources/base/media/photo5.jpg and /dev/null differ diff --git a/entry/src/main/resources/base/media/photo6.jpg b/entry/src/main/resources/base/media/photo6.jpg deleted file mode 100644 index aed456f..0000000 Binary files a/entry/src/main/resources/base/media/photo6.jpg and /dev/null differ diff --git a/entry/src/main/resources/base/media/picture1.jpg b/entry/src/main/resources/base/media/picture1.jpg deleted file mode 100644 index 8374680..0000000 Binary files a/entry/src/main/resources/base/media/picture1.jpg and /dev/null differ diff --git a/entry/src/main/resources/base/media/pngNet.png b/entry/src/main/resources/base/media/pngNet.png deleted file mode 100644 index cba0bad..0000000 Binary files a/entry/src/main/resources/base/media/pngNet.png and /dev/null differ diff --git a/entry/src/main/resources/base/media/pngSample.png b/entry/src/main/resources/base/media/pngSample.png index bda2612..ebe1711 100644 Binary files a/entry/src/main/resources/base/media/pngSample.png and b/entry/src/main/resources/base/media/pngSample.png differ diff --git a/entry/src/main/resources/base/media/svgNet.svg b/entry/src/main/resources/base/media/svgNet.svg deleted file mode 100644 index cee5c31..0000000 --- a/entry/src/main/resources/base/media/svgNet.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - 蒙版 - - - - - - - - - - - - - - \ No newline at end of file diff --git a/entry/src/main/resources/base/media/svgSample.svg b/entry/src/main/resources/base/media/svgSample.svg index 063bd30..5128434 100644 --- a/entry/src/main/resources/base/media/svgSample.svg +++ b/entry/src/main/resources/base/media/svgSample.svg @@ -1,25 +1,357 @@ - - 蒙版 + + svg1 - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/entry/src/main/resources/base/media/svgSample2.svg b/entry/src/main/resources/base/media/svgSample2.svg deleted file mode 100644 index cee5c31..0000000 --- a/entry/src/main/resources/base/media/svgSample2.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - 蒙版 - - - - - - - - - - - - - - \ No newline at end of file diff --git a/entry/src/main/resources/base/media/tiger.jpg b/entry/src/main/resources/base/media/tiger.jpg deleted file mode 100644 index bf4f798..0000000 Binary files a/entry/src/main/resources/base/media/tiger.jpg and /dev/null differ diff --git a/entry/src/main/resources/base/media/transformBase.bmp b/entry/src/main/resources/base/media/transformBase.bmp deleted file mode 100644 index cee0930..0000000 Binary files a/entry/src/main/resources/base/media/transformBase.bmp and /dev/null differ diff --git a/entry/src/main/resources/base/media/webpSample.webp b/entry/src/main/resources/base/media/webpSample.webp new file mode 100644 index 0000000..c799b82 Binary files /dev/null and b/entry/src/main/resources/base/media/webpSample.webp differ diff --git a/imageknife/package.json b/imageknife/package.json index 332c2ad..22424c1 100644 --- a/imageknife/package.json +++ b/imageknife/package.json @@ -1,29 +1,29 @@ { - "types":"", - "keywords":[ + "types": "", + "keywords": [ "OpenHarmony", "ImageKnife", "glide" ], - "author":"ohos_tpc", - "description":"专门为OpenHarmony打造的一款图像加载缓存库,致力于更高效、更轻便、更简单", - "ohos":{ - "org":"opensource" + "author": "ohos_tpc", + "description": "专门为OpenHarmony打造的一款图像加载缓存库,致力于更高效、更轻便、更简单", + "ohos": { + "org": "opensource" }, - "main":"index.ets", - "repository":"https://gitee.com/openharmony-tpc/ImageKnife", - "version":"1.0.2", - "dependencies":{ - "pako":"^1.0.5", - "@ohos/disklrucache":"file:../disklrucache", - "crc-32":"^1.2.0" + "main": "index.ets", + "repository": "https://gitee.com/openharmony-tpc/ImageKnife", + "version": "1.0.3", + "dependencies": { + "pako": "^1.0.5", + "@ohos/disklrucache": "^1.0.0", + "crc-32": "^1.2.0" }, - "tags":[ + "tags": [ "OpenHarmony", "ImageKnife", "glide" ], - "license":"Apache License 2.0", - "devDependencies":{}, - "name":"@ohos/imageknife" -} \ No newline at end of file + "license": "Apache License 2.0", + "devDependencies": {}, + "name": "@ohos/imageknife" +} diff --git a/imageknife/src/main/ets/components/imageknife/ImageKnife.ets b/imageknife/src/main/ets/components/imageknife/ImageKnife.ets index b8a7341..7ff0827 100644 --- a/imageknife/src/main/ets/components/imageknife/ImageKnife.ets +++ b/imageknife/src/main/ets/components/imageknife/ImageKnife.ets @@ -61,7 +61,7 @@ export class ImageKnife { this.memoryCache = new LruCache(100); // 创建disk缓存 传入的size 为多少比特 比如20KB 传入20*1024 - this.diskMemoryCache = DiskLruCache.create(this.imageKnifeContext.filesDir + ImageKnife.SEPARATOR + this.diskCacheFolder, 30 * 1024 * 1024); + this.diskMemoryCache = DiskLruCache.create(this.imageKnifeContext); // 创建网络下载能力 this.dataFetch = new DownloadClient(); @@ -180,12 +180,10 @@ export class ImageKnife { // 替代原来的DiskLruCache public replaceDiskLruCache(size:number) { - // this.diskMemoryCache = DiskLruCache.create(this.imageKnifeContext.filesDir+ImageKnife.SEPARATOR+this.diskCacheFolder, size); - if (this.diskMemoryCache.getCacheMap().size() <= 0) { - this.diskMemoryCache = DiskLruCache.create(this.imageKnifeContext.filesDir + ImageKnife.SEPARATOR + this.diskCacheFolder, size); + this.diskMemoryCache = DiskLruCache.create(this.imageKnifeContext, size); } else { - let newDiskLruCache = DiskLruCache.create(this.imageKnifeContext.filesDir + ImageKnife.SEPARATOR + this.diskCacheFolder, size); + let newDiskLruCache = DiskLruCache.create(this.imageKnifeContext, size); this.diskMemoryCache.foreachDiskLruCache(function (value, key, map) { newDiskLruCache.set(key, value); }) diff --git a/imageknife/src/main/ets/components/imageknife/ImageKnifeComponent.ets b/imageknife/src/main/ets/components/imageknife/ImageKnifeComponent.ets index eff9d39..f15f6bd 100644 --- a/imageknife/src/main/ets/components/imageknife/ImageKnifeComponent.ets +++ b/imageknife/src/main/ets/components/imageknife/ImageKnifeComponent.ets @@ -23,7 +23,7 @@ import {PixelMapPack} from '../imageknife/PixelMapPack' export struct ImageKnifeComponent { @Watch('watchImageKnifeOption') @Link imageKnifeOption: ImageKnifeOption; @State imageKnifePixelMapPack: PixelMapPack = new PixelMapPack(); - @State imageKnifeResource: Resource = $r('app.media.icon_loading') + @State imageKnifeResource: Resource = undefined @State imageKnifeString: string = '' @State normalPixelMap: boolean = false; @State normalResource: boolean = true; @@ -40,6 +40,8 @@ export struct ImageKnifeComponent { @State imageWidth: string = '100%'; @State imageHeight: string = '100%'; + @State imageKnifeRetry: Resource = undefined; + hasRetry:boolean = false; build() { @@ -52,7 +54,7 @@ export struct ImageKnifeComponent { .width(this.percentWidth) .height(this.percentHeight) - Image($r('app.media.icon_retry')) + Image(this.imageKnifeRetry) .onClick(()=>{ this.retryClick(); }) @@ -144,6 +146,9 @@ export struct ImageKnifeComponent { this.animateTo('image'); }) } + if (this.imageKnifeOption.retryholderSrc) { + this.imageKnifeRetry = this.imageKnifeOption.retryholderSrc + } if (this.imageKnifeOption.transform) { this.requestAddTransform(request) } diff --git a/imageknife/src/main/ets/components/imageknife/ImageKnifeOption.ets b/imageknife/src/main/ets/components/imageknife/ImageKnifeOption.ets index f2e047f..9459789 100644 --- a/imageknife/src/main/ets/components/imageknife/ImageKnifeOption.ets +++ b/imageknife/src/main/ets/components/imageknife/ImageKnifeOption.ets @@ -37,6 +37,9 @@ export class ImageKnifeOption { // 失败占位图 errorholderSrc?: PixelMap | Resource; + // 重试占位图 + retryholderSrc?: Resource; + // 缩略图,范围(0,1) thumbSizeMultiplier?: number; diff --git a/imageknife/src/main/ets/components/imageknife/transform/MaskTransformation.ets b/imageknife/src/main/ets/components/imageknife/transform/MaskTransformation.ets index 4bf6ec0..27130e6 100644 --- a/imageknife/src/main/ets/components/imageknife/transform/MaskTransformation.ets +++ b/imageknife/src/main/ets/components/imageknife/transform/MaskTransformation.ets @@ -83,10 +83,7 @@ export class MaskTransformation implements BaseTransform { if (!this._mResourceData) { throw new Error("MaskTransformation resource is empty"); } - resmgr.getResourceManager() - .then(result => { - result.getMedia(this._mResourceData - .id) + globalThis.ImageKnife.getImageKnifeContext().resourceManager.getMedia(this._mResourceData.id) .then(array => { let buffer = array.buffer.slice(array.byteOffset, array.byteLength + array.byteOffset); var imageSource = image.createImageSource(buffer as any); @@ -105,6 +102,5 @@ export class MaskTransformation implements BaseTransform { .catch(err => { func("MaskTransformation openInternal error" + err, null); }) - }) } } \ No newline at end of file diff --git a/imageknife/src/main/resources/base/media/icon_failed.png b/imageknife/src/main/resources/base/media/icon_failed.png deleted file mode 100644 index 6eadcfd..0000000 Binary files a/imageknife/src/main/resources/base/media/icon_failed.png and /dev/null differ diff --git a/imageknife/src/main/resources/base/media/icon_loading.png b/imageknife/src/main/resources/base/media/icon_loading.png deleted file mode 100644 index 6eb4e9a..0000000 Binary files a/imageknife/src/main/resources/base/media/icon_loading.png and /dev/null differ diff --git a/imageknife/src/main/resources/base/media/icon_retry.jpg b/imageknife/src/main/resources/base/media/icon_retry.jpg deleted file mode 100644 index 19911b6..0000000 Binary files a/imageknife/src/main/resources/base/media/icon_retry.jpg and /dev/null differ