去除typevalue 的null
Signed-off-by: tsm <tianshuangming@h-partners.com>
This commit is contained in:
parent
066c370b20
commit
f80dd101d0
|
@ -13,7 +13,7 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
import { DownsampleStrategy, ImageKnifeOption, } from '@ohos/imageknife';
|
import { DownsampleStrategy, ImageKnifeOption, } from '@ohos/imageknife';
|
||||||
import { ImageKnifeComponent, BlurTransformation, } from '@ohos/libraryimageknife';
|
import { ImageKnifeComponent } from '@ohos/libraryimageknife';
|
||||||
import { image } from '@kit.ImageKit';
|
import { image } from '@kit.ImageKit';
|
||||||
import { BusinessError } from '@kit.BasicServicesKit';
|
import { BusinessError } from '@kit.BasicServicesKit';
|
||||||
import { Downsampler } from '@ohos/imageknife/src/main/ets/downsampling/Downsampler';
|
import { Downsampler } from '@ohos/imageknife/src/main/ets/downsampling/Downsampler';
|
||||||
|
@ -22,7 +22,7 @@ import { FileTypeUtil } from '@ohos/imageknife/src/main/ets/utils/FileTypeUtil';
|
||||||
@Entry
|
@Entry
|
||||||
@ComponentV2
|
@ComponentV2
|
||||||
struct DownSamplePage {
|
struct DownSamplePage {
|
||||||
@Local imageKnifeOption: ImageKnifeOption = new ImageKnifeOption( {
|
@Local imageKnifeOption: ImageKnifeOption = new ImageKnifeOption({
|
||||||
loadSrc: $r('app.media.startIcon'),
|
loadSrc: $r('app.media.startIcon'),
|
||||||
placeholderSrc: $r("app.media.loading"),
|
placeholderSrc: $r("app.media.loading"),
|
||||||
errorholderSrc: $r("app.media.app_icon"),
|
errorholderSrc: $r("app.media.app_icon"),
|
||||||
|
@ -44,7 +44,7 @@ struct DownSamplePage {
|
||||||
|
|
||||||
updateImageKnifeOption(value: string) {
|
updateImageKnifeOption(value: string) {
|
||||||
if (value === 'NONE') {
|
if (value === 'NONE') {
|
||||||
this.imageKnifeOption =new ImageKnifeOption( {
|
this.imageKnifeOption = new ImageKnifeOption({
|
||||||
loadSrc: $r('app.media.pngSample'),
|
loadSrc: $r('app.media.pngSample'),
|
||||||
placeholderSrc: $r("app.media.loading"),
|
placeholderSrc: $r("app.media.loading"),
|
||||||
errorholderSrc: $r("app.media.app_icon"),
|
errorholderSrc: $r("app.media.app_icon"),
|
||||||
|
@ -54,7 +54,7 @@ struct DownSamplePage {
|
||||||
this.originalPixMap($r('app.media.pngSample'))
|
this.originalPixMap($r('app.media.pngSample'))
|
||||||
this.afterSamplingFunc($r('app.media.pngSample'))
|
this.afterSamplingFunc($r('app.media.pngSample'))
|
||||||
} else if (value === 'AT_MOST') {
|
} else if (value === 'AT_MOST') {
|
||||||
this.imageKnifeOption =new ImageKnifeOption( {
|
this.imageKnifeOption = new ImageKnifeOption({
|
||||||
loadSrc: $r('app.media.pngSample'),
|
loadSrc: $r('app.media.pngSample'),
|
||||||
placeholderSrc: $r("app.media.loading"),
|
placeholderSrc: $r("app.media.loading"),
|
||||||
errorholderSrc: $r("app.media.app_icon"),
|
errorholderSrc: $r("app.media.app_icon"),
|
||||||
|
@ -64,7 +64,7 @@ struct DownSamplePage {
|
||||||
this.originalPixMap($r('app.media.pngSample'))
|
this.originalPixMap($r('app.media.pngSample'))
|
||||||
this.afterSamplingFunc($r('app.media.pngSample'))
|
this.afterSamplingFunc($r('app.media.pngSample'))
|
||||||
} else if (value === 'FIT_CENTER_MEMORY') {
|
} else if (value === 'FIT_CENTER_MEMORY') {
|
||||||
this.imageKnifeOption =new ImageKnifeOption( {
|
this.imageKnifeOption = new ImageKnifeOption({
|
||||||
loadSrc: $r('app.media.pngSample'),
|
loadSrc: $r('app.media.pngSample'),
|
||||||
placeholderSrc: $r("app.media.loading"),
|
placeholderSrc: $r("app.media.loading"),
|
||||||
errorholderSrc: $r("app.media.app_icon"),
|
errorholderSrc: $r("app.media.app_icon"),
|
||||||
|
@ -73,9 +73,8 @@ struct DownSamplePage {
|
||||||
})
|
})
|
||||||
this.originalPixMap($r('app.media.pngSample'))
|
this.originalPixMap($r('app.media.pngSample'))
|
||||||
this.afterSamplingFunc($r('app.media.pngSample'))
|
this.afterSamplingFunc($r('app.media.pngSample'))
|
||||||
}
|
} else if (value === 'FIT_CENTER_QUALITY') {
|
||||||
else if (value ==='FIT_CENTER_QUALITY') {
|
this.imageKnifeOption = new ImageKnifeOption({
|
||||||
this.imageKnifeOption =new ImageKnifeOption( {
|
|
||||||
loadSrc: $r('app.media.pngSample'),
|
loadSrc: $r('app.media.pngSample'),
|
||||||
placeholderSrc: $r("app.media.loading"),
|
placeholderSrc: $r("app.media.loading"),
|
||||||
errorholderSrc: $r("app.media.app_icon"),
|
errorholderSrc: $r("app.media.app_icon"),
|
||||||
|
@ -84,8 +83,7 @@ struct DownSamplePage {
|
||||||
})
|
})
|
||||||
this.originalPixMap($r('app.media.pngSample'))
|
this.originalPixMap($r('app.media.pngSample'))
|
||||||
this.afterSamplingFunc($r('app.media.pngSample'))
|
this.afterSamplingFunc($r('app.media.pngSample'))
|
||||||
}
|
} else if (value === 'CENTER_INSIDE_MEMORY') {
|
||||||
else if (value === 'CENTER_INSIDE_MEMORY') {
|
|
||||||
this.imageKnifeOption = new ImageKnifeOption({
|
this.imageKnifeOption = new ImageKnifeOption({
|
||||||
loadSrc: $r('app.media.pngSample'),
|
loadSrc: $r('app.media.pngSample'),
|
||||||
placeholderSrc: $r("app.media.loading"),
|
placeholderSrc: $r("app.media.loading"),
|
||||||
|
@ -95,7 +93,7 @@ struct DownSamplePage {
|
||||||
})
|
})
|
||||||
this.originalPixMap($r('app.media.pngSample'))
|
this.originalPixMap($r('app.media.pngSample'))
|
||||||
this.afterSamplingFunc($r('app.media.pngSample'))
|
this.afterSamplingFunc($r('app.media.pngSample'))
|
||||||
} else if (value === 'CENTER_INSIDE_QUALITY') {
|
} else if (value === 'CENTER_INSIDE_QUALITY') {
|
||||||
this.imageKnifeOption = new ImageKnifeOption({
|
this.imageKnifeOption = new ImageKnifeOption({
|
||||||
loadSrc: $r('app.media.pngSample'),
|
loadSrc: $r('app.media.pngSample'),
|
||||||
placeholderSrc: $r("app.media.loading"),
|
placeholderSrc: $r("app.media.loading"),
|
||||||
|
@ -105,8 +103,7 @@ struct DownSamplePage {
|
||||||
})
|
})
|
||||||
this.originalPixMap($r('app.media.pngSample'))
|
this.originalPixMap($r('app.media.pngSample'))
|
||||||
this.afterSamplingFunc($r('app.media.pngSample'))
|
this.afterSamplingFunc($r('app.media.pngSample'))
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
this.imageKnifeOption = new ImageKnifeOption({
|
this.imageKnifeOption = new ImageKnifeOption({
|
||||||
loadSrc: $r('app.media.pngSample'),
|
loadSrc: $r('app.media.pngSample'),
|
||||||
placeholderSrc: $r("app.media.loading"),
|
placeholderSrc: $r("app.media.loading"),
|
||||||
|
@ -123,7 +120,7 @@ struct DownSamplePage {
|
||||||
let img: Uint8Array = await getContext(this).resourceManager.getMediaContent(imgs);
|
let img: Uint8Array = await getContext(this).resourceManager.getMediaContent(imgs);
|
||||||
let imageSource: image.ImageSource = image.createImageSource(img.buffer.slice(0));
|
let imageSource: image.ImageSource = image.createImageSource(img.buffer.slice(0));
|
||||||
let fileTypeUtil = new FileTypeUtil();
|
let fileTypeUtil = new FileTypeUtil();
|
||||||
let typeValue = fileTypeUtil.getFileType(img.buffer.slice(0));
|
let typeValue = fileTypeUtil.getFileType(img.buffer.slice(0)) as string;
|
||||||
let decodingOptions: image.DecodingOptions = {
|
let decodingOptions: image.DecodingOptions = {
|
||||||
editable: true,
|
editable: true,
|
||||||
desiredPixelFormat: 3,
|
desiredPixelFormat: 3,
|
||||||
|
|
|
@ -15,7 +15,9 @@
|
||||||
import {
|
import {
|
||||||
CacheStrategy,
|
CacheStrategy,
|
||||||
ImageKnifeRequestSource,
|
ImageKnifeRequestSource,
|
||||||
ImageKnifeRequestWithSource, RequestJobRequest } from './model/ImageKnifeData';
|
ImageKnifeRequestWithSource,
|
||||||
|
RequestJobRequest
|
||||||
|
} from './model/ImageKnifeData';
|
||||||
import List from '@ohos.util.List'
|
import List from '@ohos.util.List'
|
||||||
import { FileCache } from './cache/FileCache';
|
import { FileCache } from './cache/FileCache';
|
||||||
import { LogUtil } from './utils/LogUtil';
|
import { LogUtil } from './utils/LogUtil';
|
||||||
|
@ -42,20 +44,20 @@ class RequestData {
|
||||||
export class ImageKnifeLoader {
|
export class ImageKnifeLoader {
|
||||||
static async parseImage(resBuf: ArrayBuffer, typeValue: string, fileKey: string,
|
static async parseImage(resBuf: ArrayBuffer, typeValue: string, fileKey: string,
|
||||||
request: RequestJobRequest): Promise<RequestJobResult> {
|
request: RequestJobRequest): Promise<RequestJobResult> {
|
||||||
if(request.isAnimator) {
|
if (request.isAnimator) {
|
||||||
return ImageKnifeLoader.parseForAnimatorComponent(resBuf ,typeValue ,fileKey, request)
|
return ImageKnifeLoader.parseForAnimatorComponent(resBuf, typeValue, fileKey, request)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (typeValue === 'gif' || typeValue === 'webp') {
|
if (typeValue === 'gif' || typeValue === 'webp') {
|
||||||
return ImageKnifeLoader.parseAnimatorImage(resBuf ,typeValue ,fileKey , request)
|
return ImageKnifeLoader.parseAnimatorImage(resBuf, typeValue, fileKey, request)
|
||||||
} else if(typeValue == "svg") {
|
} else if (typeValue == "svg") {
|
||||||
return ImageKnifeLoader.parseSvgImage(resBuf ,typeValue ,fileKey , request)
|
return ImageKnifeLoader.parseSvgImage(resBuf, typeValue, fileKey, request)
|
||||||
}
|
}
|
||||||
|
|
||||||
return ImageKnifeLoader.parseNormalImage(resBuf, typeValue, fileKey, request)
|
return ImageKnifeLoader.parseNormalImage(resBuf, typeValue, fileKey, request)
|
||||||
}
|
}
|
||||||
|
|
||||||
static makeEmptyResult(error: string): RequestJobResult{
|
static makeEmptyResult(error: string): RequestJobResult {
|
||||||
return {
|
return {
|
||||||
pixelMap: undefined,
|
pixelMap: undefined,
|
||||||
bufferSize: 0,
|
bufferSize: 0,
|
||||||
|
@ -64,23 +66,25 @@ export class ImageKnifeLoader {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static async parseNormalImage(resBuf: ArrayBuffer, typeValue: string, fileKey: string, request: RequestJobRequest):Promise<RequestJobResult> {
|
static async parseNormalImage(resBuf: ArrayBuffer, typeValue: string, fileKey: string,
|
||||||
|
request: RequestJobRequest): Promise<RequestJobResult> {
|
||||||
let resPixelmap: PixelMap | undefined = undefined
|
let resPixelmap: PixelMap | undefined = undefined
|
||||||
let decodingOptions: image.DecodingOptions = {
|
let decodingOptions: image.DecodingOptions = {
|
||||||
editable: request.requestSource === ImageKnifeRequestSource.SRC && request.transformation !== undefined ? true : false,
|
editable: request.requestSource === ImageKnifeRequestSource.SRC && request.transformation !== undefined ? true :
|
||||||
|
false,
|
||||||
}
|
}
|
||||||
let imageSource: image.ImageSource = image.createImageSource(resBuf)
|
let imageSource: image.ImageSource = image.createImageSource(resBuf)
|
||||||
if (imageSource === undefined){
|
if (imageSource === undefined) {
|
||||||
return ImageKnifeLoader.makeEmptyResult("image.createImageSource failed")
|
return ImageKnifeLoader.makeEmptyResult("image.createImageSource failed")
|
||||||
}
|
}
|
||||||
|
|
||||||
let size = (await imageSource.getImageInfo()).size
|
let size = (await imageSource.getImageInfo()).size
|
||||||
try{
|
try {
|
||||||
if ((request.downsampType !== DownsampleStrategy.NONE) &&
|
if ((request.downsampType !== DownsampleStrategy.NONE) &&
|
||||||
request.requestSource == ImageKnifeRequestSource.SRC ) {
|
request.requestSource == ImageKnifeRequestSource.SRC) {
|
||||||
decodingOptions =await ImageKnifeLoader.downsamplerReqSize(typeValue,request,size,ImageKnifeRequestSource.SRC)
|
decodingOptions = ImageKnifeLoader.downsamplerReqSize(typeValue, request, size, ImageKnifeRequestSource.SRC)
|
||||||
}
|
}
|
||||||
}catch(err){
|
} catch (err) {
|
||||||
return ImageKnifeLoader.makeEmptyResult("image.createImageSource failed")
|
return ImageKnifeLoader.makeEmptyResult("image.createImageSource failed")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -97,15 +101,16 @@ export class ImageKnifeLoader {
|
||||||
pixelMap: resPixelmap,
|
pixelMap: resPixelmap,
|
||||||
bufferSize: resBuf.byteLength,
|
bufferSize: resBuf.byteLength,
|
||||||
fileKey: fileKey,
|
fileKey: fileKey,
|
||||||
size:size,
|
size: size,
|
||||||
type:typeValue
|
type: typeValue
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
static async parseSvgImage(resBuf: ArrayBuffer, typeValue: string, fileKey: string,
|
static async parseSvgImage(resBuf: ArrayBuffer, typeValue: string, fileKey: string,
|
||||||
request: RequestJobRequest): Promise<RequestJobResult> {
|
request: RequestJobRequest): Promise<RequestJobResult> {
|
||||||
let resPixelmap: PixelMap | undefined = undefined
|
let resPixelmap: PixelMap | undefined = undefined
|
||||||
let imageSource: image.ImageSource = image.createImageSource(resBuf)
|
let imageSource: image.ImageSource = image.createImageSource(resBuf)
|
||||||
if (imageSource === undefined){
|
if (imageSource === undefined) {
|
||||||
return ImageKnifeLoader.makeEmptyResult("image.createImageSource failed")
|
return ImageKnifeLoader.makeEmptyResult("image.createImageSource failed")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -121,12 +126,12 @@ export class ImageKnifeLoader {
|
||||||
editable: true,
|
editable: true,
|
||||||
desiredSize: defaultSize
|
desiredSize: defaultSize
|
||||||
};
|
};
|
||||||
try{
|
try {
|
||||||
if ((request.downsampType !== DownsampleStrategy.NONE) &&
|
if ((request.downsampType !== DownsampleStrategy.NONE) &&
|
||||||
request.requestSource == ImageKnifeRequestSource.SRC ) {
|
request.requestSource == ImageKnifeRequestSource.SRC) {
|
||||||
opts =await ImageKnifeLoader.downsamplerReqSize(typeValue,request,size)
|
opts = ImageKnifeLoader.downsamplerReqSize(typeValue, request, size)
|
||||||
}
|
}
|
||||||
}catch(err){
|
} catch (err) {
|
||||||
return ImageKnifeLoader.makeEmptyResult("image.createImageSource failed")
|
return ImageKnifeLoader.makeEmptyResult("image.createImageSource failed")
|
||||||
}
|
}
|
||||||
await imageSource.createPixelMap(opts)
|
await imageSource.createPixelMap(opts)
|
||||||
|
@ -142,13 +147,14 @@ export class ImageKnifeLoader {
|
||||||
pixelMap: resPixelmap,
|
pixelMap: resPixelmap,
|
||||||
bufferSize: resBuf.byteLength,
|
bufferSize: resBuf.byteLength,
|
||||||
fileKey: fileKey,
|
fileKey: fileKey,
|
||||||
type:typeValue
|
type: typeValue
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
static async parseAnimatorImage(resBuf: ArrayBuffer, typeValue: string,
|
static async parseAnimatorImage(resBuf: ArrayBuffer, typeValue: string,
|
||||||
fileKey: string,request: RequestJobRequest): Promise<RequestJobResult> {
|
fileKey: string, request: RequestJobRequest): Promise<RequestJobResult> {
|
||||||
let imageSource: image.ImageSource = image.createImageSource(resBuf)
|
let imageSource: image.ImageSource = image.createImageSource(resBuf)
|
||||||
if (imageSource === undefined){
|
if (imageSource === undefined) {
|
||||||
return ImageKnifeLoader.makeEmptyResult("image.createImageSource failed")
|
return ImageKnifeLoader.makeEmptyResult("image.createImageSource failed")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -156,28 +162,32 @@ export class ImageKnifeLoader {
|
||||||
let size = (await imageSource.getImageInfo()).size
|
let size = (await imageSource.getImageInfo()).size
|
||||||
imageSource.release()
|
imageSource.release()
|
||||||
|
|
||||||
if(frameCount == undefined || frameCount == 1) {
|
if (frameCount == undefined || frameCount == 1) {
|
||||||
} else {
|
} else {
|
||||||
let base64str = "data:image/" + typeValue + ";base64," + new util.Base64Helper().encodeToStringSync(new Uint8Array(resBuf))
|
let base64str =
|
||||||
|
"data:image/" + typeValue + ";base64," + new util.Base64Helper().encodeToStringSync(new Uint8Array(resBuf))
|
||||||
return {
|
return {
|
||||||
pixelMap: base64str,
|
pixelMap: base64str,
|
||||||
bufferSize: resBuf.byteLength,
|
bufferSize: resBuf.byteLength,
|
||||||
fileKey: fileKey,
|
fileKey: fileKey,
|
||||||
size:size,
|
size: size,
|
||||||
type:typeValue
|
type: typeValue
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
return ImageKnifeLoader.parseNormalImage(resBuf, typeValue, fileKey, request)
|
return ImageKnifeLoader.parseNormalImage(resBuf, typeValue, fileKey, request)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 为AnimatorComponent解析动图
|
// 为AnimatorComponent解析动图
|
||||||
static async parseForAnimatorComponent(resBuf: ArrayBuffer, typeValue: string, fileKey: string,request: RequestJobRequest): Promise<RequestJobResult> {
|
static async parseForAnimatorComponent(resBuf: ArrayBuffer, typeValue: string, fileKey: string,
|
||||||
|
request: RequestJobRequest): Promise<RequestJobResult> {
|
||||||
if (typeValue === 'gif' || typeValue === 'webp') {
|
if (typeValue === 'gif' || typeValue === 'webp') {
|
||||||
let imageSource: image.ImageSource = image.createImageSource(resBuf);
|
let imageSource: image.ImageSource = image.createImageSource(resBuf);
|
||||||
if (imageSource === undefined){
|
if (imageSource === undefined) {
|
||||||
return ImageKnifeLoader.makeEmptyResult("image.createImageSource failed")
|
return ImageKnifeLoader.makeEmptyResult("image.createImageSource failed")
|
||||||
}
|
}
|
||||||
let decodingOptions: image.DecodingOptions = {
|
let decodingOptions: image.DecodingOptions = {
|
||||||
editable: request.requestSource === ImageKnifeRequestSource.SRC && request.transformation !== undefined ? true : false,
|
editable: request.requestSource === ImageKnifeRequestSource.SRC && request.transformation !== undefined ? true :
|
||||||
|
false,
|
||||||
}
|
}
|
||||||
let pixelMapList: Array<PixelMap> = []
|
let pixelMapList: Array<PixelMap> = []
|
||||||
let delayList: Array<number> = []
|
let delayList: Array<number> = []
|
||||||
|
@ -214,13 +224,15 @@ export class ImageKnifeLoader {
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取图片资源
|
// 获取图片资源
|
||||||
static async getImageArrayBuffer(request: RequestJobRequest, requestList: List<ImageKnifeRequestWithSource> | undefined,fileKey:string): Promise<ArrayBuffer> {
|
static async getImageArrayBuffer(request: RequestJobRequest,
|
||||||
|
requestList: List<ImageKnifeRequestWithSource> | undefined, fileKey: string): Promise<ArrayBuffer> {
|
||||||
let resBuf: ArrayBuffer | undefined
|
let resBuf: ArrayBuffer | undefined
|
||||||
|
|
||||||
// 判断自定义下载
|
// 判断自定义下载
|
||||||
if (request.customGetImage !== undefined && request.requestSource == ImageKnifeRequestSource.SRC && typeof request.src == "string") {
|
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) {
|
||||||
LogUtil.log("start customGetImage src=" + request.src)
|
LogUtil.log("start customGetImage src=" + request.src)
|
||||||
try {
|
try {
|
||||||
|
@ -239,16 +251,14 @@ export class ImageKnifeLoader {
|
||||||
LogUtil.log("ImageKnife_DataTime_requestJob_saveFileCacheOnlyFile.end:" + request.src)
|
LogUtil.log("ImageKnife_DataTime_requestJob_saveFileCacheOnlyFile.end:" + request.src)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
if (typeof request.src === 'string') {
|
if (typeof request.src === 'string') {
|
||||||
if (request.src.indexOf("http://") == 0 || request.src.indexOf("https://") == 0) { //从网络下载
|
if (request.src.indexOf("http://") == 0 || request.src.indexOf("https://") == 0) { //从网络下载
|
||||||
// 先从文件缓存获取
|
// 先从文件缓存获取
|
||||||
resBuf = FileCache.getFileCacheByFile(request.context, fileKey , request.fileCacheFolder)
|
resBuf = FileCache.getFileCacheByFile(request.context, fileKey, request.fileCacheFolder)
|
||||||
if (resBuf !== undefined){
|
if (resBuf !== undefined) {
|
||||||
LogUtil.log("success get image from filecache for key = " + fileKey + " src = " + request.src)
|
LogUtil.log("success get image from filecache for key = " + fileKey + " src = " + request.src)
|
||||||
}
|
} else if (request.onlyRetrieveFromCache != true) {
|
||||||
else if (request.onlyRetrieveFromCache != true) {
|
|
||||||
LogUtil.log("HttpDownloadClient.start:" + request.src)
|
LogUtil.log("HttpDownloadClient.start:" + request.src)
|
||||||
let httpRequest = http.createHttp();
|
let httpRequest = http.createHttp();
|
||||||
let progress: number = 0
|
let progress: number = 0
|
||||||
|
@ -277,10 +287,11 @@ export class ImageKnifeLoader {
|
||||||
if (requestList === undefined) {
|
if (requestList === undefined) {
|
||||||
// 子线程
|
// 子线程
|
||||||
emitter.emit(Constants.PROGRESS_EMITTER + request.memoryKey, { data: { "value": progress } })
|
emitter.emit(Constants.PROGRESS_EMITTER + request.memoryKey, { data: { "value": progress } })
|
||||||
}else {
|
} else {
|
||||||
// 主线程请求
|
// 主线程请求
|
||||||
requestList!.forEach((requestWithSource: ImageKnifeRequestWithSource) => {
|
requestList!.forEach((requestWithSource: ImageKnifeRequestWithSource) => {
|
||||||
if (requestWithSource.request.imageKnifeOption.progressListener !== undefined && requestWithSource.source === ImageKnifeRequestSource.SRC) {
|
if (requestWithSource.request.imageKnifeOption.progressListener !== undefined &&
|
||||||
|
requestWithSource.source === ImageKnifeRequestSource.SRC) {
|
||||||
requestWithSource.request.imageKnifeOption.progressListener(progress)
|
requestWithSource.request.imageKnifeOption.progressListener(progress)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -311,29 +322,31 @@ export class ImageKnifeLoader {
|
||||||
LogUtil.log("HttpDownloadClient.end:" + request.src)
|
LogUtil.log("HttpDownloadClient.end:" + request.src)
|
||||||
// 保存文件缓存
|
// 保存文件缓存
|
||||||
if (resBuf !== undefined && request.writeCacheStrategy !== CacheStrategy.Memory) {
|
if (resBuf !== undefined && request.writeCacheStrategy !== CacheStrategy.Memory) {
|
||||||
LogUtil.log("ImageKnife_DataTime_requestJob_saveFileCacheOnlyFile.start:"+request.src)
|
LogUtil.log("ImageKnife_DataTime_requestJob_saveFileCacheOnlyFile.start:" + request.src)
|
||||||
FileCache.saveFileCacheOnlyFile(request.context, fileKey, resBuf , request.fileCacheFolder)
|
FileCache.saveFileCacheOnlyFile(request.context, fileKey, resBuf, request.fileCacheFolder)
|
||||||
LogUtil.log("ImageKnife_DataTime_requestJob_saveFileCacheOnlyFile.end:"+request.src)
|
LogUtil.log("ImageKnife_DataTime_requestJob_saveFileCacheOnlyFile.end:" + request.src)
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
throw new Error('onlyRetrieveFromCache,do not fetch image src = ' + request.src)
|
throw new Error('onlyRetrieveFromCache,do not fetch image src = ' + request.src)
|
||||||
}
|
}
|
||||||
} else if (request.src.startsWith('datashare://') || request.src.startsWith('file://')) {
|
} else if (request.src.startsWith('datashare://') || request.src.startsWith('file://')) {
|
||||||
await fs.open(request.src, fs.OpenMode.READ_ONLY).then(async (file) => {
|
await fs.open(request.src, fs.OpenMode.READ_ONLY).then(async (file) => {
|
||||||
await fs.stat(file.fd).then(async (stat) =>{
|
await fs.stat(file.fd).then(async (stat) => {
|
||||||
let buf = new ArrayBuffer(stat.size);
|
let buf = new ArrayBuffer(stat.size);
|
||||||
await fs.read(file.fd, buf).then((readLen) => {
|
await fs.read(file.fd, buf).then((readLen) => {
|
||||||
resBuf = buf;
|
resBuf = buf;
|
||||||
fs.closeSync(file.fd);
|
fs.closeSync(file.fd);
|
||||||
}).catch((err:BusinessError) => {
|
}).catch((err: BusinessError) => {
|
||||||
throw new Error('LoadDataShareFileClient fs.read err happened uri=' + request.src + " err.msg=" + err?.message + " err.code=" + err?.code)
|
throw new Error('LoadDataShareFileClient fs.read err happened uri=' + request.src + " err.msg=" +
|
||||||
|
err?.message + " err.code=" + err?.code)
|
||||||
})
|
})
|
||||||
}).catch((err:BusinessError) => {
|
}).catch((err: BusinessError) => {
|
||||||
throw new Error('LoadDataShareFileClient fs.stat err happened uri=' + request.src + " err.msg=" + err?.message + " err.code=" + err?.code)
|
throw new Error('LoadDataShareFileClient fs.stat err happened uri=' + request.src + " err.msg=" +
|
||||||
|
err?.message + " err.code=" + err?.code)
|
||||||
})
|
})
|
||||||
}).catch((err:BusinessError) => {
|
}).catch((err: BusinessError) => {
|
||||||
throw new Error('LoadDataShareFileClient fs.open err happened uri=' + request.src + " err.msg=" + err?.message + " err.code=" + err?.code)
|
throw new Error('LoadDataShareFileClient fs.open err happened uri=' + request.src + " err.msg=" +
|
||||||
|
err?.message + " err.code=" + err?.code)
|
||||||
})
|
})
|
||||||
} else { //从本地文件获取
|
} else { //从本地文件获取
|
||||||
try {
|
try {
|
||||||
|
@ -350,15 +363,16 @@ export class ImageKnifeLoader {
|
||||||
}
|
}
|
||||||
} else if (typeof request.src == "number") { //从资源文件获取
|
} else if (typeof request.src == "number") { //从资源文件获取
|
||||||
let manager = request.context.createModuleContext(request.moduleName).resourceManager
|
let manager = request.context.createModuleContext(request.moduleName).resourceManager
|
||||||
if (resBuf == undefined && request.onlyRetrieveFromCache != true && request.requestSource == ImageKnifeRequestSource.SRC) {
|
if (resBuf == undefined && request.onlyRetrieveFromCache != true &&
|
||||||
if(request.src == -1) {
|
request.requestSource == ImageKnifeRequestSource.SRC) {
|
||||||
|
if (request.src == -1) {
|
||||||
let resName = request.resName 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(request.src).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(request.src == -1) {
|
if (request.src == -1) {
|
||||||
let resName = request.resName 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 {
|
||||||
|
@ -368,30 +382,35 @@ export class ImageKnifeLoader {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (resBuf === undefined){
|
if (resBuf === undefined) {
|
||||||
throw new Error('getImageArrayBuffer undefined')
|
throw new Error('getImageArrayBuffer undefined')
|
||||||
}
|
}
|
||||||
return resBuf
|
return resBuf
|
||||||
}
|
}
|
||||||
static async downsamplerReqSize(typeValue:string,request:RequestJobRequest ,size:Size,SRC?:ImageKnifeRequestSource): Promise<image.DecodingOptions>{
|
|
||||||
let reqSize = new Downsampler().calculateScaling(typeValue, size.width, size.height, request.targetWidth, request.targetHeight, request.downsampType)
|
static downsamplerReqSize(typeValue: string, request: RequestJobRequest, size: Size,
|
||||||
if(typeValue=="svg") {
|
SRC?: ImageKnifeRequestSource) {
|
||||||
|
let reqSize =
|
||||||
|
new Downsampler().calculateScaling(typeValue, size.width, size.height, request.targetWidth, request.targetHeight,
|
||||||
|
request.downsampType)
|
||||||
|
if (typeValue == "svg") {
|
||||||
return ({
|
return ({
|
||||||
editable: true,
|
editable: true,
|
||||||
desiredSize: ({
|
desiredSize: ({
|
||||||
height: vp2px(reqSize.targetHeight),
|
height: vp2px(reqSize.targetHeight),
|
||||||
width: vp2px(reqSize.targetWidth)
|
width: vp2px(reqSize.targetWidth)
|
||||||
} as Size)
|
} as Size)
|
||||||
} as image.DecodingOptions )
|
|
||||||
}else {
|
} as image.DecodingOptions)
|
||||||
return( {
|
} else {
|
||||||
editable: request.requestSource ===SRC && request.transformation !== undefined ? true : false,
|
return ({
|
||||||
desiredSize: ({
|
editable: request.requestSource === SRC && request.transformation !== undefined ? true : false,
|
||||||
width: reqSize.targetWidth,
|
desiredSize: ({
|
||||||
height: reqSize.targetHeight
|
width: reqSize.targetWidth,
|
||||||
}as Size)
|
height: reqSize.targetHeight
|
||||||
}as image.DecodingOptions)
|
} as Size)
|
||||||
}
|
} as image.DecodingOptions)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ export interface calculateScaleType {
|
||||||
|
|
||||||
export class Downsampler {
|
export class Downsampler {
|
||||||
calculateScaling(
|
calculateScaling(
|
||||||
typeValue: string |null,
|
typeValue: string,
|
||||||
sourceWidth: number, //原始宽高
|
sourceWidth: number, //原始宽高
|
||||||
sourceHeight: number, //原始宽高
|
sourceHeight: number, //原始宽高
|
||||||
requestWidth: number, //请求宽高
|
requestWidth: number, //请求宽高
|
||||||
|
|
Loading…
Reference in New Issue