dcmcjpls(1)
π dcmcjpls(1) β OFFIS DCMTK π
Okay bestie, this is the dcmcjpls manual page, and it is literally the JPEG-LS encoder of the DCMTK lineup. We are keeping every flag, every default, every tag, and every caveat. No cap. π
πΈ NAME πΈ
dcmcjpls β Encode DICOM file to JPEG-LS transfer syntax.
β¨ SYNOPSIS β¨
dcmcjpls [options] dcmfile-in dcmfile-out
π DESCRIPTION π
The dcmcjpls utility reads an uncompressed DICOM image (dcmfile-in), performs a JPEG-LS compression β i. e. conversion to an encapsulated DICOM transfer syntax β and writes the converted image to an output file (dcmfile-out). It is giving βcompress the pixels and secure the bagβ energy. π¦
π PARAMETERS π
dcmfile-inβ DICOM input filename to be converted (-for stdin).dcmfile-outβ DICOM output filename (-for stdout).
π₯ OPTIONS π₯
πΈ general options πΈ
-h,--helpβ print this help text and exit.--versionβ print version information and exit.--argumentsβ print expanded command line arguments.-q,--quietβ quiet mode, print no warnings and errors.-v,--verboseβ verbose mode, print processing details.-d,--debugβ debug mode, print debug information.-ll,--log-levelβ[l]evel: string constant(fatal,error,warn,info,debug,trace); use levellfor the logger.-lc,--log-configβ[f]ilename: string; use config fileffor the logger.
πΈ input options πΈ
πΈ input file format πΈ
+f,--read-fileβ read file format or data set (default).+fo,--read-file-onlyβ read file format only.-f,--read-datasetβ read data set without file meta information.
πΈ input transfer syntax πΈ
-t=,--read-xfer-autoβ use TS recognition (default).-td,--read-xfer-detectβ ignore TS specified in the file meta header.-te,--read-xfer-littleβ read with explicit VR little endian TS.-tb,--read-xfer-bigβ read with explicit VR big endian TS.-ti,--read-xfer-implicitβ read with implicit VR little endian TS.
πΈ JPEG-LS encoding options πΈ
πΈ JPEG-LS process πΈ
+el,--encode-losslessβ encode JPEG-LS lossless only TS (default).
This option selects the JPEG-LS lossless only transfer syntax and performs a lossless compression. Iconic behavior, honestly. β¨
+en,--encode-nearlosslessβ encode JPEG-LS near-lossless TS (NEAR: 2).
This option selects the JPEG-LS lossy transfer syntax and performs a near-lossless compression. It is lowkey lossy but trying its best. π
πΈ JPEG-LS bit rate (near-lossless only) πΈ
+md,--max-deviationβ[d]eviation: integer(default:2); defines maximum deviation for an encoded pixel.
This option specifies the maximum deviation for a single pixel from the original pixel value.
πΈ lossless compression πΈ
+pr,--prefer-rawβ prefer raw encoder mode (default).
This option enables the raw encoder. The raw encoder encodes the complete pixel cell as it was read from the source image without performing any modifications. Raw is the main character here. π
+pc,--prefer-cookedβ prefer cooked encoder mode.
This option enables the cooked encoder. The cooked encoder moves overlay data to separate tags (60xx,3000) and only encodes the stored bits in each pixel. Cooked, but make it DICOM. π
πΈ JPEG-LS compression πΈ
+t1,--threshold1β[t]hreshhold: integer; set JPEG-LS encoding parameter threshold 1.+t2,--threshold2β[t]hreshhold: integer; set JPEG-LS encoding parameter threshold 2.+t3,--threshold3β[t]hreshhold: integer; set JPEG-LS encoding parameter threshold 3.
By default, the values for T1, T2, T3 are computed based on the number of bits per sample. The typo in threshhold is preserved exactly, because we do not fix the lore. π
+rs,--resetβ[r]eset: integer(default:64); set JPEG-LS encoding parameter reset.
πΈ JPEG-LS interleave πΈ
+il,--interleave-lineβ force line-interleaved JPEG-LS images (default).
This flag forces line-interleaved mode for the resulting image. In line-interleave mode each line from the source image is compressed separately for each component and then the next line is encoded.
+is,--interleave-sampleβ force sample-interleaved JPEG-LS images.
This flag forces sample-interleaved mode for the resulting image. In sample-interleave mode each pixel's components are encoded before the next pixel is encoded.
+iv,--interleave-defaultβ use the fastest possible interleave mode.
This flag selects an interleave mode based on the source image's mode. If possible, the image is not converted to a different interleave mode.
πΈ JPEG-LS padding of odd-length bitstreams πΈ
+ps,--padding-standardβ pad with extended EOI marker (default).
Pad odd-length JPEG-LS bitstreams by writing an extended end of image segment marker FF FF D9, as required by the DICOM standard. Standard behavior ate. π
+pz,--padding-zeroβ pad with zero byte (non-standard).
Pad odd-length JPEG-LS bitstreams by writing a zero byte after the end of image segment marker, i. e. FF D9 00. This is not DICOM conformant but required for interoperability with the HP LOCO reference implementation, which does not support extended JPEG-LS bitstreams.
π¨ Bestie, +pz is non-standard. It is not DICOM conformant. Use it only when you need that HP LOCO interoperability. Do not pretend it is standard, because it is not. π
πΈ encapsulated pixel data encoding options πΈ
πΈ encapsulated pixel data fragmentation πΈ
+ff,--fragment-per-frameβ encode each frame as one fragment (default).
This option causes the creation of one compressed fragment for each frame (recommended). Clean, simple, recommended. Periodt.
+fs,--fragment-sizeβ[s]ize: integer; limit fragment size toskbytes.
This option limits the fragment size which may cause the creation of multiple fragments per frame. Tiny fragments, tiny vibes. π
πΈ basic offset table encoding πΈ
+ot,--offset-table-createβ create offset table (default).
This option causes the creation of a valid offset table for the compressed JPEG fragments.
-ot,--offset-table-emptyβ leave offset table empty.
This option causes the creation of an empty offset table for the compressed JPEG fragments.
πΈ icon image encoding πΈ
+ic,--icon-compressedβ compress icon images (default).+iu,--icon-uncompressedβ keep icon images uncompressed.
πΈ SOP Class UID πΈ
+cd,--class-defaultβ keep SOP Class UID (default).
Keep the SOP Class UID of the source image.
+cs,--class-scβ convert to Secondary Capture Image (implies--uid-always).
Convert the image to Secondary Capture. In addition to the SOP Class UID, all attributes required for a valid secondary capture image are added. A new SOP instance UID is always assigned.
πΈ SOP Instance UID πΈ
+ud,--uid-defaultβ assign new UID if lossy compression (default).
Assigns a new SOP instance UID if the compression is lossy JPEG-LS.
+ua,--uid-alwaysβ always assign new UID.
Unconditionally assigns a new SOP instance UID.
+un,--uid-neverβ never assign new UID.
Never assigns a new SOP instance UID.
πΈ output options πΈ
πΈ post-1993 value representations πΈ
+u,--enable-new-vrβ enable support for new VRs (UN/UT) (default).-u,--disable-new-vrβ disable support for new VRs, convert toOB.
πΈ group length encoding πΈ
+g=,--group-length-recalcβ recalculate group lengths if present (default).+g,--group-length-createβ always write with group length elements.-g,--group-length-removeβ always write without group length elements.
πΈ length encoding in sequences and items πΈ
+e,--length-explicitβ write with explicit lengths (default).-e,--length-undefinedβ write with undefined lengths.
πΈ data set trailing padding πΈ
-p=,--padding-retainβ do not change padding (default).-p,--padding-offβ no padding.+p,--padding-createβ[f]ile-pad [i]tem-pad: integer; align file on multiple offbytes and items on multiple ofibytes.
π¦ NOTES π¦
The dcmcjpls utility compresses DICOM images of all SOP classes. It processes all Pixel Data (7fe0,0010) elements in the dataset, i. e. compression is also performed on an icon image. However, dcmcjpls does not attempt to ensure that the compressed image still complies with all restrictions of the object's IOD.
The user is responsible for making sure that the compressed images he creates are compliant with the DICOM standard. If in question, the dcmcjpls utility allows one to convert an image to secondary capture β this SOP class does not pose restrictions as the ones mentioned above.
π Translation: yes, it compresses all the Pixel Data it finds, including icon images. No, it will not babysit your IOD restrictions for you. You are responsible for DICOM compliance. If you are unsure, secondary capture is the escape hatch.
π TRANSFER SYNTAXES π
dcmcjpls supports the following transfer syntaxes for input (dcmfile-in):
LittleEndianImplicitTransferSyntaxβ1.2.840.10008.1.2LittleEndianExplicitTransferSyntaxβ1.2.840.10008.1.2.1DeflatedExplicitVRLittleEndianTransferSyntaxβ1.2.840.10008.1.2.1.99(*)BigEndianExplicitTransferSyntaxβ1.2.840.10008.1.2.2
(*) if compiled with zlib support enabled.
dcmcjpls supports the following transfer syntaxes for output (dcmfile-out):
JPEGLSLosslessTransferSyntaxβ1.2.840.10008.1.2.4.80JPEGLSLossyTransferSyntaxβ1.2.840.10008.1.2.4.81
β LOGGING β
The level of logging output of the various command line tools and underlying libraries can be specified by the user. By default, only errors and warnings are written to the standard error stream. Using option --verbose also informational messages like processing details are reported. Option --debug can be used to get more details on the internal activity, e. g. for debugging purposes. Other logging levels can be selected using option --log-level. In --quiet mode only fatal errors are reported. In such very severe error events, the application will usually terminate. For more details on the different logging levels, see documentation of module "oflog".
In case the logging output should be written to file (optionally with logfile rotation), to syslog (Unix) or the event log (Windows) option --log-config can be used. This configuration file also allows for directing only certain messages to a particular output stream and for filtering certain messages based on the module or application where they are generated. An example configuration file is provided in <etcdir>/logger.cfg.
π¬ COMMAND LINE π¬
okay bestie, before you go anywhere near the flags, let's talk about how these tools read what you type, because the notation is lowkey its own little language β¨
- Square brackets
[...]mean the thing inside is optional β so that's 0-1 values, your choice π - Three trailing dots
...mean "you can put more than one of these here" β as in 1-n values, go off π - Both together (brackets and dots) mean 0 to n values β zero's fine, a whole pile's fine, no stress π«Ά
Command line options get told apart from parameters by a leading + or - sign, respectively. Iconic. Usually the order and position of options is arbitrary β like, they can literally appear anywhere and the tool won't care π. But if two options are mutually exclusive, the rightmost appearance wins. That's not a vibe, that's the standard evaluation rules of common Unix shells, fr fr.
And here's the fun part π β you can also hand over one or more command files by prefixing the filename with an @ sign, like @command.txt. That argument gets swapped out for the contents of the corresponding text file before anything else gets evaluated. And when it does that? Multiple whitespaces count as a single separator β unless they're sitting between two quotation marks, in which case they stay put π¦.
β οΈ Heads up bestie: a command file cannot contain another command file. No nesting, no inception, we don't do that here π
This simple but effective approach is genuinely giving main character energy β it lets you bundle up common combos of options/parameters and dodge those longish, confusing command lines entirely. There's literally an example waiting for you in the file <datadir>/dumppat.txt πΈ
π ENVIRONMENT π
The dcmcjpls utility will attempt to load DICOM data dictionaries that you've specified in the DCMDICTPATH environment variable. But by default β meaning if DCMDICTPATH isn't set at all β the file <datadir>/dicom.dic gets loaded instead, unless the dictionary is built into the application (which is the default on Windows, iykyk) πͺ
π The default behavior should be preferred, okay? Only reach for the DCMDICTPATH environment variable when you actually need alternative data dictionaries. Trust the process β¨
DCMDICTPATH has the same format as the Unix shell PATH variable β a colon (":") separates the entries. On Windows systems though, it's a semicolon (";") doing the separating π
The data dictionary code will attempt to load each file you list in DCMDICTPATH. And if no data dictionary can be loaded at all? That's an error. Full stop π
π SEE ALSO π
dcmdjpls(1)β go read that one too, bestie, it's the whole reason this page exists π
Β©οΈ COPYRIGHT Β©οΈ
Copyright (C) 2009-2026 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. π«Ά
that's the whole page, babe β go forth and compress some JPEG-LS π β¨
Version 3.7.1 π¦ Sat Oct 17 2026 09:34:01 π slay, see you in the next manpage π
π¦ where this page comes from
- arch rolling: dcmtk 3.7.1-1 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms