fix insert image anr bug

Signed-off-by: yiqiang <tangyiqiang@huawei.com>
This commit is contained in:
yiqiang 2022-11-04 16:18:03 +08:00
parent fdb3691ecf
commit 361f6c262c
4 changed files with 40 additions and 9 deletions

View File

@ -17,7 +17,7 @@ import DateUtil from '@ohos/utils/src/main/ets/default/baseUtil/DateUtil'
import RdbStoreUtil from '@ohos/utils/src/main/ets/default/baseUtil/RdbStoreUtil'
import FolderData from '@ohos/utils/src/main/ets/default/model/databaseModel/FolderData'
import NoteData from '@ohos/utils/src/main/ets/default/model/databaseModel/NoteData'
import { atob, btoa } from 'js-base64'
import util from '@ohos.util'
import { TableName, NoteTableColumn, SysDefFolderUuid, Favorite, Delete
} from '@ohos/utils/src/main/ets/default/model/databaseModel/EnumData'
import StyleConstants from '@ohos/utils/src/main/ets/default/constants/StyleConstants'
@ -131,10 +131,14 @@ export struct NoteContent {
} else if (html.indexOf("gif") > 0) {
imgType = 'gif'
}
let filePath = ""
if (base64regex.test(imgData)) {
imgData = atob(imgData)
let base64 = new util.Base64()
let decodeArr = base64.decodeSync(imgData)
filePath = OperationUtils.saveImageData(decodeArr, imgType)
} else {
filePath = OperationUtils.saveImage(imgData, imgType)
}
let filePath = OperationUtils.saveImage(imgData, imgType)
realHtml = "file://" + filePath
}
LogUtil.info(TAG, 'paste info11' + realHtml)

View File

@ -24,7 +24,7 @@ import { EditContentDialog, DeleteDialog, EditTitleDialog } from './CusDialogCom
import FolderUtil from '@ohos/utils/src/main/ets/default/baseUtil/FolderUtil'
import NoteUtil from '@ohos/utils/src/main/ets/default/baseUtil/NoteUtil'
import prompt from '@system.prompt'
import { atob, btoa } from 'js-base64'
import util from '@ohos.util'
import { LogUtil } from '@ohos/utils/src/main/ets/default/baseUtil/LogUtil'
import OperationUtils from '@ohos/utils/src/main/ets/default/baseUtil/OperationUtils'
import mediaquery from '@ohos.mediaquery'
@ -155,10 +155,14 @@ export struct NoteContentComp {
} else if (html.indexOf("gif") > 0) {
imgType = 'gif'
}
let filePath = ""
if (base64regex.test(imgData)) {
imgData = atob(imgData)
let base64 = new util.Base64()
let decodeArr = base64.decodeSync(imgData)
filePath = OperationUtils.saveImageData(decodeArr, imgType)
} else {
filePath = OperationUtils.saveImage(imgData, imgType)
}
let filePath = OperationUtils.saveImage(imgData, imgType)
realHtml = "file://" + filePath
}
LogUtil.info(TAG, 'paste info11-' + realHtml)

View File

@ -17,7 +17,7 @@ import DateUtil from '@ohos/utils/src/main/ets/default/baseUtil/DateUtil'
import RdbStoreUtil from '@ohos/utils/src/main/ets/default/baseUtil/RdbStoreUtil'
import FolderData from '@ohos/utils/src/main/ets/default/model/databaseModel/FolderData'
import NoteData from '@ohos/utils/src/main/ets/default/model/databaseModel/NoteData'
import { atob } from 'js-base64'
import util from '@ohos.util'
import { TableName, NoteTableColumn, SysDefFolderUuid, Favorite, Delete
} from '@ohos/utils/src/main/ets/default/model/databaseModel/EnumData'
import StyleConstants from '@ohos/utils/src/main/ets/default/constants/StyleConstants'
@ -135,10 +135,14 @@ export struct NoteContentCompPortrait {
} else if (html.indexOf("gif") > 0) {
imgType = 'gif'
}
let filePath = ""
if (base64regex.test(imgData)) {
imgData = atob(imgData)
let base64 = new util.Base64()
let decodeArr = base64.decodeSync(imgData)
filePath = OperationUtils.saveImageData(decodeArr, imgType)
} else {
filePath = OperationUtils.saveImage(imgData, imgType)
}
let filePath = OperationUtils.saveImage(imgData, imgType)
realHtml = "file://" + filePath
}
LogUtil.info(TAG, 'paste info11' + realHtml)

View File

@ -57,6 +57,25 @@ export class OperationUtils {
return imagePath.toString()
}
saveImageData(dataArray: Uint8Array, imageType: string): string {
try {
var context = globalThis.noteContext
// 1、获取本地路径
var dir = context.filesDir
var time = new Date().getTime()
var imagePath = dir + "/" + time.toString() + "_note" + "." + imageType
let fd = fileio.openSync(imagePath, 0o100 | 0o2, 0o666)
// 3、把image数据写入本地图片文件中
fileio.writeSync(fd, dataArray.buffer)
} catch (error) {
LogUtil.info(TAG, "create error: " + error);
return;
}
LogUtil.info(TAG, 'save image end');
return imagePath.toString()
}
saveImage(imageData: string, imageType: string): string {
try {
var context = globalThis.noteContext