Skip to content

Commit

Permalink
feat: add base dcm2dcm
Browse files Browse the repository at this point in the history
- may be possible to use for converting transfer syntax in the future
  • Loading branch information
Chinlinlee committed May 13, 2023
1 parent 2f4be2e commit d71d895
Show file tree
Hide file tree
Showing 184 changed files with 11,543 additions and 4,383 deletions.
80 changes: 80 additions & 0 deletions models/DICOM/dcm4che/dcm2dcm.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
const { java } = require("./java-instance");
const { File } = require("./wrapper/java/io/File");
const { FileOutputStream } = require("./wrapper/java/io/FileOutputStream");
const { TransferSyntaxType } = require("./wrapper/org/dcm4che3/imageio/codec/TransferSyntaxType");
const { Transcoder } = require("./wrapper/org/dcm4che3/imageio/codec/Transcoder");
const { createTranscoder$HandlerProxy } = require("./wrapper/org/dcm4che3/imageio/codec/Transcoder$Handler");
const { UID } = require("./wrapper/org/dcm4che3/data/UID");
const { DicomEncodingOptions } = require("./wrapper/org/dcm4che3/io/DicomEncodingOptions");

/**
* @description Implement dcm2dcm in node.js
* @see {@link https://github.com/dcm4che/dcm4che/blob/master/dcm4che-tool/dcm4che-tool-dcm2dcm/src/main/java/org/dcm4che3/tool/dcm2dcm/Dcm2Dcm.java|Dcm2Dcm.java}
* @example
*let src = new File("src.dcm");
*let dest = new File("dest.dcm");
*let localDcm2Dcm = new LocalDcm2Dcm();
*localDcm2Dcm.setTransferSyntax(UID.JPEGBaseline8Bit);
*await localDcm2Dcm.transcode(src, dest);
*/
class LocalDcm2Dcm {
constructor() {
this.retainFileMetaInfo = true;
this.maxThreads = 1;
this.encOpts = DicomEncodingOptions.DEFAULT;
}

/**
*
* @param {string} uid
*/
setTransferSyntax(uid) {
this.transferSyntaxUid = uid;
this.transferSyntaxType = TransferSyntaxType.forUIDSync(uid);

if (this.transferSyntaxType == null)
throw new Error(`Unsupported Transfer Syntax: ${this.transferSyntaxUid}`);
}

/**
*
* @param {number} maxThreads
*/
setMaxThreads(maxThreads) {
if (maxThreads <= 0)
throw new Error(`max-threads must be greater than 0, max-threads: ${maxThreads}`);

this.maxThreads = maxThreads;
}

/**
*
* @param {File} src
* @param {File} dest
*/
async transcode(src, dest) {
await this.transcodeWithTranscoder(src, dest);
}

async transcodeWithTranscoder(src, dest) {
let transcoder;
try {
transcoder = new Transcoder(src);
await transcoder.setIncludeFileMetaInformation(true);
await transcoder.setRetainFileMetaInformation(true);
await transcoder.setEncodingOptions(this.encOpts);
await transcoder.setDestinationTransferSyntax(this.transferSyntaxUid);
await transcoder.setCompressParams([]);
const proxy = createTranscoder$HandlerProxy({
newOutputStream: async (transcoder1, dataset) => await FileOutputStream.newInstanceAsync(dest)
});
await transcoder.transcode(proxy);
} catch ( e) {
throw e;
} finally {
await transcoder.close();
}
}
}

module.exports.LocalDcm2Dcm = LocalDcm2Dcm;
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
96 changes: 48 additions & 48 deletions models/DICOM/dcm4che/wrapper/java/awt/Color.d.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import { JavaClass, BasicOrJavaType } from "java-bridge";
import { Integer as java_lang_Integer } from "./../lang/Integer";
import { ColorSpace as java_awt_color_ColorSpace } from "./color/ColorSpace";
import { Float as java_lang_Float } from "./../lang/Float";
import { PaintContext as java_awt_PaintContext } from "./PaintContext";
import { ColorModel as java_awt_image_ColorModel } from "./image/ColorModel";
import { Rectangle as java_awt_Rectangle } from "./Rectangle";
import { Rectangle2D as java_awt_geom_Rectangle2D } from "./geom/Rectangle2D";
import { AffineTransform as java_awt_geom_AffineTransform } from "./geom/AffineTransform";
import { RenderingHints as java_awt_RenderingHints } from "./RenderingHints";
import { ColorSpace as java_awt_color_ColorSpace } from "./color/ColorSpace";
import { Float as java_lang_Float } from "./../lang/Float";
import { Long as java_lang_Long } from "./../lang/Long";
import { Class as java_lang_Class } from "./../lang/Class";
import { Boolean as java_lang_Boolean } from "./../lang/Boolean";
Expand Down Expand Up @@ -170,29 +170,23 @@ export declare class ColorClass extends JavaClass {
*/
static decodeSync(var0: string | null): Color | null;
/**
* @return original return type: 'java.awt.color.ColorSpace'
*/
getColorSpace(): Promise<java_awt_color_ColorSpace | null>;
/**
* @return original return type: 'java.awt.color.ColorSpace'
*/
getColorSpaceSync(): java_awt_color_ColorSpace | null;
/**
* @return original return type: 'int'
*/
getRGB(): Promise<number>;
/**
* @return original return type: 'int'
*/
getRGBSync(): number;
/**
* @return original return type: 'int'
* @param var0 original type: 'java.awt.image.ColorModel'
* @param var1 original type: 'java.awt.Rectangle'
* @param var2 original type: 'java.awt.geom.Rectangle2D'
* @param var3 original type: 'java.awt.geom.AffineTransform'
* @param var4 original type: 'java.awt.RenderingHints'
* @return original return type: 'java.awt.PaintContext'
*/
getTransparency(): Promise<number>;
createContext(var0: java_awt_image_ColorModel | null, var1: java_awt_Rectangle | null, var2: java_awt_geom_Rectangle2D | null, var3: java_awt_geom_AffineTransform | null, var4: java_awt_RenderingHints | null): Promise<java_awt_PaintContext | null>;
/**
* @return original return type: 'int'
* @param var0 original type: 'java.awt.image.ColorModel'
* @param var1 original type: 'java.awt.Rectangle'
* @param var2 original type: 'java.awt.geom.Rectangle2D'
* @param var3 original type: 'java.awt.geom.AffineTransform'
* @param var4 original type: 'java.awt.RenderingHints'
* @return original return type: 'java.awt.PaintContext'
*/
getTransparencySync(): number;
createContextSync(var0: java_awt_image_ColorModel | null, var1: java_awt_Rectangle | null, var2: java_awt_geom_Rectangle2D | null, var3: java_awt_geom_AffineTransform | null, var4: java_awt_RenderingHints | null): java_awt_PaintContext | null;
/**
* @return original return type: 'int'
*/
Expand Down Expand Up @@ -225,6 +219,18 @@ export declare class ColorClass extends JavaClass {
* @return original return type: 'int'
*/
getBlueSync(): number;
/**
* @param var0 original type: 'java.awt.color.ColorSpace'
* @param var1 original type: 'float[]'
* @return original return type: 'float[]'
*/
getComponents(var0: java_awt_color_ColorSpace | null, var1: (java_lang_Float | number)[] | null): Promise<(number)[] | null>;
/**
* @param var0 original type: 'java.awt.color.ColorSpace'
* @param var1 original type: 'float[]'
* @return original return type: 'float[]'
*/
getComponentsSync(var0: java_awt_color_ColorSpace | null, var1: (java_lang_Float | number)[] | null): (number)[] | null;
/**
* @param var0 original type: 'float[]'
* @return original return type: 'float[]'
Expand All @@ -236,17 +242,29 @@ export declare class ColorClass extends JavaClass {
*/
getComponentsSync(var0: (java_lang_Float | number)[] | null): (number)[] | null;
/**
* @param var0 original type: 'java.awt.color.ColorSpace'
* @param var1 original type: 'float[]'
* @return original return type: 'float[]'
* @return original return type: 'int'
*/
getComponents(var0: java_awt_color_ColorSpace | null, var1: (java_lang_Float | number)[] | null): Promise<(number)[] | null>;
getTransparency(): Promise<number>;
/**
* @param var0 original type: 'java.awt.color.ColorSpace'
* @param var1 original type: 'float[]'
* @return original return type: 'float[]'
* @return original return type: 'int'
*/
getComponentsSync(var0: java_awt_color_ColorSpace | null, var1: (java_lang_Float | number)[] | null): (number)[] | null;
getTransparencySync(): number;
/**
* @return original return type: 'int'
*/
getRGB(): Promise<number>;
/**
* @return original return type: 'int'
*/
getRGBSync(): number;
/**
* @return original return type: 'java.awt.color.ColorSpace'
*/
getColorSpace(): Promise<java_awt_color_ColorSpace | null>;
/**
* @return original return type: 'java.awt.color.ColorSpace'
*/
getColorSpaceSync(): java_awt_color_ColorSpace | null;
/**
* @param var0 original type: 'java.lang.String'
* @param var1 original type: 'int'
Expand Down Expand Up @@ -297,24 +315,6 @@ export declare class ColorClass extends JavaClass {
* @return original return type: 'java.awt.Color'
*/
darkerSync(): Color | null;
/**
* @param var0 original type: 'java.awt.image.ColorModel'
* @param var1 original type: 'java.awt.Rectangle'
* @param var2 original type: 'java.awt.geom.Rectangle2D'
* @param var3 original type: 'java.awt.geom.AffineTransform'
* @param var4 original type: 'java.awt.RenderingHints'
* @return original return type: 'java.awt.PaintContext'
*/
createContext(var0: java_awt_image_ColorModel | null, var1: java_awt_Rectangle | null, var2: java_awt_geom_Rectangle2D | null, var3: java_awt_geom_AffineTransform | null, var4: java_awt_RenderingHints | null): Promise<java_awt_PaintContext | null>;
/**
* @param var0 original type: 'java.awt.image.ColorModel'
* @param var1 original type: 'java.awt.Rectangle'
* @param var2 original type: 'java.awt.geom.Rectangle2D'
* @param var3 original type: 'java.awt.geom.AffineTransform'
* @param var4 original type: 'java.awt.RenderingHints'
* @return original return type: 'java.awt.PaintContext'
*/
createContextSync(var0: java_awt_image_ColorModel | null, var1: java_awt_Rectangle | null, var2: java_awt_geom_Rectangle2D | null, var3: java_awt_geom_AffineTransform | null, var4: java_awt_RenderingHints | null): java_awt_PaintContext | null;
/**
* @param var0 original type: 'float'
* @param var1 original type: 'float'
Expand Down
2 changes: 1 addition & 1 deletion models/DICOM/dcm4che/wrapper/java/awt/Color.d.ts.map

Large diffs are not rendered by default.

64 changes: 32 additions & 32 deletions models/DICOM/dcm4che/wrapper/java/awt/Component.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -472,13 +472,13 @@ export declare class ComponentClass extends JavaClass {
*/
isValidSync(): boolean;
/**
* @return original return type: 'java.awt.image.ColorModel'
* @return original return type: 'int'
*/
getColorModel(): Promise<java_awt_image_ColorModel | null>;
getHeight(): Promise<number>;
/**
* @return original return type: 'java.awt.image.ColorModel'
* @return original return type: 'int'
*/
getColorModelSync(): java_awt_image_ColorModel | null;
getHeightSync(): number;
/**
* @return original return type: 'int'
*/
Expand All @@ -490,11 +490,27 @@ export declare class ComponentClass extends JavaClass {
/**
* @return original return type: 'int'
*/
getHeight(): Promise<number>;
getX(): Promise<number>;
/**
* @return original return type: 'int'
*/
getHeightSync(): number;
getXSync(): number;
/**
* @return original return type: 'int'
*/
getY(): Promise<number>;
/**
* @return original return type: 'int'
*/
getYSync(): number;
/**
* @return original return type: 'java.awt.image.ColorModel'
*/
getColorModel(): Promise<java_awt_image_ColorModel | null>;
/**
* @return original return type: 'java.awt.image.ColorModel'
*/
getColorModelSync(): java_awt_image_ColorModel | null;
/**
* @return original return type: 'java.awt.Graphics'
*/
Expand Down Expand Up @@ -525,22 +541,6 @@ export declare class ComponentClass extends JavaClass {
* @return original return type: 'java.awt.Image'
*/
createImageSync(var0: java_awt_image_ImageProducer | JavaInterfaceProxy<java_awt_image_ImageProducerInterface> | null): java_awt_Image | null;
/**
* @return original return type: 'int'
*/
getX(): Promise<number>;
/**
* @return original return type: 'int'
*/
getXSync(): number;
/**
* @return original return type: 'int'
*/
getY(): Promise<number>;
/**
* @return original return type: 'int'
*/
getYSync(): number;
/**
* @param var0 original type: 'java.awt.Image'
* @param var1 original type: 'int'
Expand All @@ -561,6 +561,16 @@ export declare class ComponentClass extends JavaClass {
* @return original return type: 'boolean'
*/
imageUpdateSync(var0: java_awt_Image | null, var1: java_lang_Integer | number, var2: java_lang_Integer | number, var3: java_lang_Integer | number, var4: java_lang_Integer | number, var5: java_lang_Integer | number): boolean;
/**
* @param var0 original type: 'java.awt.Rectangle'
* @return original return type: 'void'
*/
setBounds(var0: java_awt_Rectangle | null): Promise<void>;
/**
* @param var0 original type: 'java.awt.Rectangle'
* @return original return type: 'void'
*/
setBoundsSync(var0: java_awt_Rectangle | null): void;
/**
* @param var0 original type: 'int'
* @param var1 original type: 'int'
Expand All @@ -577,16 +587,6 @@ export declare class ComponentClass extends JavaClass {
* @return original return type: 'void'
*/
setBoundsSync(var0: java_lang_Integer | number, var1: java_lang_Integer | number, var2: java_lang_Integer | number, var3: java_lang_Integer | number): void;
/**
* @param var0 original type: 'java.awt.Rectangle'
* @return original return type: 'void'
*/
setBounds(var0: java_awt_Rectangle | null): Promise<void>;
/**
* @param var0 original type: 'java.awt.Rectangle'
* @return original return type: 'void'
*/
setBoundsSync(var0: java_awt_Rectangle | null): void;
/**
* @param var0 original type: 'int'
* @param var1 original type: 'int'
Expand Down
2 changes: 1 addition & 1 deletion models/DICOM/dcm4che/wrapper/java/awt/Component.d.ts.map

Large diffs are not rendered by default.

Loading

0 comments on commit d71d895

Please sign in to comment.