docs(canvas): explain compute workers and display resource lifetimes
This commit is contained in:
@@ -1,7 +1,15 @@
|
||||
/**
|
||||
* 专用图片解码 Worker:使用 createImageBitmap 读取尺寸,立即 close bitmap 后回传纯数据。
|
||||
* 它不输出转码图片、不更改原文件,也不创建新上传/生成任务;宿主负责终止 Worker 与核对消息归属。
|
||||
*/
|
||||
/** 仅声明本入口需要的 Worker 消息能力,不导入 renderer 或 DOM 状态。 */
|
||||
const worker=globalThis as unknown as{onmessage:((event:MessageEvent)=>void)|null;postMessage(value:unknown):void};
|
||||
/** 接受正确版本/id/Blob,按 from-image 选项解码;失败回稳定 image_decode_failed。 */
|
||||
worker.onmessage=async event=>{
|
||||
const {version,id,bytes}=event.data??{};if(version!==1||!Number.isSafeInteger(id)||!(bytes instanceof Blob))return;
|
||||
// bitmap 是临时原生资源,尺寸读取即使抛错也由 finally close;成功只发送 width/height 和输入长度。
|
||||
try{const bitmap=await createImageBitmap(bytes,{imageOrientation:'from-image'});let width:number,height:number;try{width=bitmap.width;height=bitmap.height;}finally{bitmap.close();}worker.postMessage({version:1,id,byteLength:bytes.size,width,height});}
|
||||
catch{worker.postMessage({version:1,id,byteLength:bytes.size,error:'image_decode_failed'});}
|
||||
};
|
||||
// 标记为独立 TypeScript 模块,避免 Worker 全局声明与其它源码脚本命名空间合并。
|
||||
export {};
|
||||
|
||||
Reference in New Issue
Block a user