@@ -18,8 +18,8 @@ import { OrbitControls } from "three/examples/jsm/controls/OrbitControls";
1818import copperMScene from "../Scene/copperMScene" ;
1919import copperScene from "../Scene/copperScene" ;
2020import { throttle } from "./raycaster" ;
21- import { saveFileAsJson } from "./download" ;
2221import { switchEraserSize } from "./utils" ;
22+ import { saveFileAsJson } from "./download" ;
2323
2424export class nrrd_tools {
2525 container : HTMLDivElement ;
@@ -2433,107 +2433,39 @@ export class nrrd_tools {
24332433 // this.paintImages.y,
24342434 // this.paintImages.y.length
24352435 // );
2436- exportDataFormat . z = this . restructData (
2437- this . paintImages . z ,
2438- this . paintImages . z . length ,
2439- this . nrrd_states . nrrd_x_centimeter ,
2440- this . nrrd_states . nrrd_y_centimeter
2441- ) ;
24422436
2443- window . alert ( "Export all images, starting!!!" ) ;
2444- try {
2445- for ( let i = 0 ; i < 3 ; i ++ ) {
2446- switch ( i ) {
2447- case 0 :
2448- if ( exportDataFormat . x . length > 0 ) {
2449- const blob = new Blob ( [ JSON . stringify ( exportDataFormat . x ) ] , {
2450- type : "text/plain;charset=utf-8" ,
2451- } ) ;
2452- saveFileAsJson ( blob , "copper3D_export data_x.json" ) ;
2453- }
2454- break ;
2455-
2456- case 1 :
2457- if ( exportDataFormat . y . length > 0 ) {
2458- const blob1 = new Blob ( [ JSON . stringify ( exportDataFormat . y ) ] , {
2459- type : "text/plain;charset=utf-8" ,
2460- } ) ;
2461- saveFileAsJson ( blob1 , "copper3D_export data_y.json" ) ;
2462- }
2463- break ;
2464- case 2 :
2465- if ( exportDataFormat . z . length > 0 ) {
2466- const blob2 = new Blob ( [ JSON . stringify ( exportDataFormat . z ) ] , {
2467- type : "text/plain;charset=utf-8" ,
2468- } ) ;
2469- saveFileAsJson ( blob2 , "copper3D_export data_z.json" ) ;
2470- }
2471- break ;
2472- }
2437+ const worker = new Worker (
2438+ new URL ( "./workers/reformatSaveDataWorker.ts" , import . meta. url ) ,
2439+ {
2440+ type : "module" ,
24732441 }
2442+ ) ;
2443+ window . alert ( "Export masks, starting!!!" ) ;
2444+ worker . postMessage ( {
2445+ masksData : this . paintImages . z ,
2446+ len : this . paintImages . z . length ,
2447+ width : this . nrrd_states . nrrd_x_centimeter ,
2448+ height : this . nrrd_states . nrrd_y_centimeter ,
2449+ type : "reformat" ,
2450+ } ) ;
24742451
2475- window . alert ( "Export all images successfully!!!" ) ;
2476- } catch ( error ) {
2477- console . log ( error ) ;
2452+ worker . onmessage = ( ev : MessageEvent ) => {
2453+ const result = ev . data ;
2454+ if ( result . type === "reformat" ) {
2455+ exportDataFormat . z = result . masks ;
24782456
2479- window . alert ( "Export failed!" ) ;
2480- }
2481- }
2482- restructData (
2483- originArr : paintImageType [ ] ,
2484- len : number ,
2485- width : number ,
2486- height : number
2487- ) {
2488- const reformatData = [ ] ;
2489- // const convertCanvas = document.createElement("canvas");
2490- // const convertCtx = convertCanvas.getContext(
2491- // "2d"
2492- // ) as CanvasRenderingContext2D;
2493- for ( let i = 0 ; i < len ; i ++ ) {
2494- let exportTemp : exportPaintImageType = {
2495- sliceIndex : 0 ,
2496- dataFormat :
2497- "RGBA - Each successive 4-digit number forms a pixel point in data array" ,
2498- width,
2499- height,
2500- voxelSpacing : this . nrrd_states . voxelSpacing ,
2501- spaceOrigin : this . nrrd_states . spaceOrigin ,
2502- data : [ ] ,
2503- } ;
2504- exportTemp . sliceIndex = originArr [ i ] . index ;
2505-
2506- // this.setEmptyCanvasSize();
2507- // convertCanvas.width = this.nrrd_states.originWidth;
2508- // convertCanvas.height = this.nrrd_states.originHeight;
2509- // this.emptyCtx.putImageData(originArr[i].image, 0, 0);
2510-
2511- // convertCtx.drawImage(
2512- // this.emptyCanvas,
2513- // 0,
2514- // 0,
2515- // convertCanvas.width,
2516- // convertCanvas.height
2517- // );
2518-
2519- // const imageData = convertCtx.getImageData(
2520- // 0,
2521- // 0,
2522- // convertCanvas.width,
2523- // convertCanvas.height
2524- // );
2525-
2526- const imageData = originArr [ i ] . image ;
2527-
2528- const temp = [ ] ;
2529- for ( let j = 0 ; j < imageData . data . length ; j ++ ) {
2530- temp . push ( imageData . data [ j ] ) ;
2457+ worker . postMessage ( {
2458+ masksData : exportDataFormat . z ,
2459+ type : "saveBlob" ,
2460+ } ) ;
2461+ } else if ( result . type === "saveBlob" ) {
2462+ if ( result . data ) {
2463+ saveFileAsJson ( result . data , "copper3D_export data_z.json" ) ;
2464+ window . alert ( "Export masks successfully!!!" ) ;
2465+ } else {
2466+ window . alert ( "Export failed!" ) ;
2467+ }
25312468 }
2532-
2533- exportTemp . data = temp ;
2534- reformatData . push ( exportTemp ) ;
2535- }
2536-
2537- return reformatData ;
2469+ } ;
25382470 }
25392471}
0 commit comments