Compare commits
2 Commits
327c4c0088
...
e641e99cb8
Author | SHA1 | Date |
---|---|---|
|
e641e99cb8 | |
|
1dde38f537 |
|
@ -58,19 +58,21 @@ export struct CustomNetImagePage {
|
||||||
}
|
}
|
||||||
// 自定义下载方法
|
// 自定义下载方法
|
||||||
@Concurrent
|
@Concurrent
|
||||||
async function custom(context: Context, src: string | PixelMap | Resource,onComplete:(buffer:ArrayBuffer)=>void,onError:(err:string)=>void,headers?: Record<string, Object>): Promise<void> {
|
async function custom(context: Context, src: string | PixelMap | Resource,headers?: Record<string,Object>): Promise<ArrayBuffer | undefined> {
|
||||||
if (typeof src == "string") {
|
return new Promise((resolve,reject)=>{
|
||||||
let session = GetSession.session
|
if (typeof src == "string") {
|
||||||
let req = new rcp.Request(src,"GET");
|
let session = GetSession.session
|
||||||
session.fetch(req).then((response)=>{
|
let req = new rcp.Request(src,"GET");
|
||||||
if(response.statusCode == 200) {
|
session.fetch(req).then((response)=>{
|
||||||
let buffer = response.body
|
if(response.statusCode == 200) {
|
||||||
onComplete(buffer!)
|
let buffer = response.body
|
||||||
} else {
|
resolve(buffer)
|
||||||
onError("rcp code:"+response.statusCode)
|
} else {
|
||||||
}
|
reject("rcp code:"+response.statusCode)
|
||||||
}).catch((err:BusinessError)=>{
|
}
|
||||||
onError("error rcp src:"+src+",err:"+JSON.stringify(err))
|
}).catch((err:BusinessError)=>{
|
||||||
})
|
reject("error rcp src:"+src+",err:"+JSON.stringify(err))
|
||||||
}
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
|
@ -109,8 +109,8 @@ struct LoadStatePage {
|
||||||
}
|
}
|
||||||
// 自定义下载方法
|
// 自定义下载方法
|
||||||
@Concurrent
|
@Concurrent
|
||||||
async function custom(context: Context, src: string | PixelMap | Resource,onComplete:(buffer:ArrayBuffer)=>void,onError:(err:string)=>void,headers?: Record<string, Object>):Promise<void> {
|
async function custom(context: Context, src: string | PixelMap | Resource,headers?: Record<string,Object>): Promise<ArrayBuffer | undefined> {
|
||||||
console.info("ImageKnife:: custom download:" + src)
|
console.info("ImageKnife:: custom download:" + src)
|
||||||
// 举例写死从本地文件读取,也可以自己请求网络图片
|
// 举例写死从本地文件读取,也可以自己请求网络图片
|
||||||
onError("undefined")
|
return undefined
|
||||||
}
|
}
|
|
@ -128,11 +128,11 @@ struct SingleImage {
|
||||||
|
|
||||||
// 自定义下载方法
|
// 自定义下载方法
|
||||||
@Concurrent
|
@Concurrent
|
||||||
async function custom(context: Context, src: string | PixelMap | Resource,onComplete:(buffer:ArrayBuffer)=>void,onError:(err:string)=>void,headers?: Record<string, Object>): Promise<void> {
|
async function custom(context: Context, src: string | PixelMap | Resource,headers?: Record<string,Object>): Promise<ArrayBuffer | undefined> {
|
||||||
let refer = headers!["refer"] as string
|
let refer = headers!["refer"] as string
|
||||||
console.info("ImageKnife:: custom download:" + src,"refer:"+refer)
|
console.info("ImageKnife:: custom download:" + src,"refer:"+refer)
|
||||||
// 举例写死从本地文件读取,也可以自己请求网络图片
|
// 举例写死从本地文件读取,也可以自己请求网络图片
|
||||||
let buffer = context.resourceManager.getMediaContentSync($r("app.media.startIcon").id).buffer as ArrayBuffer
|
let buffer = context.resourceManager.getMediaContentSync($r("app.media.startIcon").id).buffer as ArrayBuffer
|
||||||
onComplete(buffer)
|
return buffer
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -60,9 +60,9 @@ struct TestSetCustomImagePage {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@Concurrent
|
@Concurrent
|
||||||
async function custom(context: Context, src: string | PixelMap | Resource,onComplete:(buffer:ArrayBuffer)=>void,onError:(err:string)=>void,headers?: Record<string, Object>):Promise<void> {
|
async function custom(context: Context, src: string | PixelMap | Resource,headers?: Record<string,Object>): Promise<ArrayBuffer | undefined> {
|
||||||
console.info("ImageKnife:: custom download:" + src)
|
console.info("ImageKnife:: custom download:" + src)
|
||||||
// 举例写死从本地文件读取,也可以自己请求网络图片
|
// 举例写死从本地文件读取,也可以自己请求网络图片
|
||||||
let buffer = context.resourceManager.getMediaContentSync($r("app.media.pngSample").id).buffer as ArrayBuffer
|
let buffer = context.resourceManager.getMediaContentSync($r("app.media.pngSample").id).buffer as ArrayBuffer
|
||||||
onComplete(buffer)
|
return buffer
|
||||||
}
|
}
|
|
@ -38,7 +38,7 @@ export class ImageKnife {
|
||||||
private _isRequestInSubThread: boolean = true;
|
private _isRequestInSubThread: boolean = true;
|
||||||
//定义全局网络请求header map
|
//定义全局网络请求header map
|
||||||
headerMap: Map<string, Object> = new Map<string, Object>();
|
headerMap: Map<string, Object> = new Map<string, Object>();
|
||||||
customGetImage: ((context: Context, src: string | PixelMap | Resource,onComplete:(buffer:ArrayBuffer)=>void,onError:(err:string)=>void,headers?: Record<string, Object>) => Promise<void>) | undefined = undefined
|
customGetImage: ((context: Context, src: string | PixelMap | Resource,headers?: Record<string,Object>) => Promise<ArrayBuffer | undefined>) | undefined = undefined
|
||||||
public static getInstance(): ImageKnife {
|
public static getInstance(): ImageKnife {
|
||||||
if (!ImageKnife.instance) {
|
if (!ImageKnife.instance) {
|
||||||
ImageKnife.instance = new ImageKnife();
|
ImageKnife.instance = new ImageKnife();
|
||||||
|
@ -482,10 +482,10 @@ export class ImageKnife {
|
||||||
* 全局设置自定义下载
|
* 全局设置自定义下载
|
||||||
* @param customGetImage 自定义请求函数
|
* @param customGetImage 自定义请求函数
|
||||||
*/
|
*/
|
||||||
setCustomGetImage(customGetImage?: (context: Context, src: string | PixelMap | Resource,onComplete:(buffer:ArrayBuffer)=>void,onError:(err:string)=>void,headers?: Record<string, Object>) => Promise<void>) {
|
setCustomGetImage(customGetImage?: (context: Context, src: string | PixelMap | Resource,headers?: Record<string,Object>) => Promise<ArrayBuffer | undefined>) {
|
||||||
this.customGetImage = customGetImage
|
this.customGetImage = customGetImage
|
||||||
}
|
}
|
||||||
getCustomGetImage(): undefined | ((context: Context, src: string | PixelMap | Resource,onComplete:(buffer:ArrayBuffer)=>void,onError:(err:string)=>void,headers?: Record<string, Object>) => Promise<void>){
|
getCustomGetImage(): undefined | ((context: Context, src: string | PixelMap | Resource,headers?: Record<string,Object>) => Promise<ArrayBuffer | undefined>){
|
||||||
return this.customGetImage
|
return this.customGetImage
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -246,19 +246,28 @@ export class ImageKnifeLoader {
|
||||||
if (resBuf === undefined) {
|
if (resBuf === undefined) {
|
||||||
LogUtil.log("start customGetImage src=" + request.src)
|
LogUtil.log("start customGetImage src=" + request.src)
|
||||||
const headerObj: Record<string, Object> = ImageKnifeLoader.getHeaderObj(request)
|
const headerObj: Record<string, Object> = ImageKnifeLoader.getHeaderObj(request)
|
||||||
let onComplete = (buffer:ArrayBuffer) => {
|
try {
|
||||||
// 保存文件缓存
|
request.customGetImage(request.context, request.src, headerObj)
|
||||||
if (request.writeCacheStrategy !== CacheStrategy.Memory) {
|
.then((buffer)=>{
|
||||||
LogUtil.log("ImageKnife_DataTime_requestJob_saveFileCacheOnlyFile.start:" + request.src)
|
if(buffer != undefined) {
|
||||||
FileCache.saveFileCacheOnlyFile(request.context, fileKey, buffer, request.fileCacheFolder)
|
// 保存文件缓存
|
||||||
LogUtil.log("ImageKnife_DataTime_requestJob_saveFileCacheOnlyFile.end:" + request.src)
|
if (request.writeCacheStrategy !== CacheStrategy.Memory) {
|
||||||
}
|
LogUtil.log("ImageKnife_DataTime_requestJob_saveFileCacheOnlyFile.start:" + request.src)
|
||||||
ImageKnifeLoader.parseImage(buffer,fileKey,request)
|
FileCache.saveFileCacheOnlyFile(request.context, fileKey, buffer, request.fileCacheFolder)
|
||||||
|
LogUtil.log("ImageKnife_DataTime_requestJob_saveFileCacheOnlyFile.end:" + request.src)
|
||||||
|
}
|
||||||
|
ImageKnifeLoader.parseImage(buffer,fileKey,request)
|
||||||
|
} else {
|
||||||
|
loadError = "customGetImage loadFail undefined"
|
||||||
|
ImageKnifeLoader.makeEmptyResult(request,loadError)
|
||||||
|
}
|
||||||
|
}).catch((err:string)=>{
|
||||||
|
ImageKnifeLoader.makeEmptyResult(request,err)
|
||||||
|
})
|
||||||
|
} catch (e) {
|
||||||
|
loadError = "customGetImage loadFail failed"
|
||||||
|
ImageKnifeLoader.makeEmptyResult(request,loadError + e)
|
||||||
}
|
}
|
||||||
let onError = (err:string) => {
|
|
||||||
ImageKnifeLoader.makeEmptyResult(request,err)
|
|
||||||
}
|
|
||||||
request.customGetImage(request.context, request.src,onComplete,onError, headerObj)
|
|
||||||
LogUtil.log("end customGetImage src=" + request.src)
|
LogUtil.log("end customGetImage src=" + request.src)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -91,7 +91,7 @@ export interface RequestJobRequest {
|
||||||
allHeaders: Map<string, Object>,
|
allHeaders: Map<string, Object>,
|
||||||
componentWidth: number,
|
componentWidth: number,
|
||||||
componentHeight: number,
|
componentHeight: number,
|
||||||
customGetImage?: (context: Context, src: string | PixelMap | Resource ,onComplete:(buffer:ArrayBuffer)=>void,onError:(err:string)=>void,headers?: Record<string, Object>) => Promise<void>,
|
customGetImage?: (context: Context, src: string | PixelMap | Resource,headers?: Record<string,Object>) => Promise<ArrayBuffer | undefined>,
|
||||||
onlyRetrieveFromCache?: boolean
|
onlyRetrieveFromCache?: boolean
|
||||||
requestSource: ImageKnifeRequestSource
|
requestSource: ImageKnifeRequestSource
|
||||||
transformation?: PixelMapTransformation
|
transformation?: PixelMapTransformation
|
||||||
|
|
|
@ -61,7 +61,7 @@ export class ImageKnifeOption {
|
||||||
placeholderObjectFit?: ImageFit
|
placeholderObjectFit?: ImageFit
|
||||||
// 错误图填充效果
|
// 错误图填充效果
|
||||||
errorholderObjectFit?: ImageFit
|
errorholderObjectFit?: ImageFit
|
||||||
customGetImage?: (context: Context, src: string | PixelMap | Resource,onComplete:(buffer:ArrayBuffer)=>void,onError:(err:string)=>void,headers?: Record<string, Object>) => Promise<void>
|
customGetImage?: (context: Context, src: string | PixelMap | Resource,headers?: Record<string,Object>) => Promise<ArrayBuffer | undefined>
|
||||||
border?: BorderOptions
|
border?: BorderOptions
|
||||||
// 缓存策略
|
// 缓存策略
|
||||||
writeCacheStrategy?: CacheStrategy
|
writeCacheStrategy?: CacheStrategy
|
||||||
|
|
Loading…
Reference in New Issue