opj_compress(1)

πŸ’– opj_compress β€” the manual page, but make it make sense πŸ’–

okay bestie, sit down, hydrate, because this is the tool that turns your regular little images into ✨jpeg2000✨ files. it's part of the OpenJPEG library, and the manual page for it lives in section 1 (opj_compress(1)) β€” the "converts to jpeg2000 files" corner of the man universe. πŸ¦‹


🌸 NAME 🌸

opj_compress β€” this program reads in an image of a certain type and converts it to a jpeg2000 file. it's part of the OpenJPEG library. no cap.

Valid input image extensions are .bmp, .pgm, .pgx, .png, .pnm, .ppm, .raw, .tga, .tif. For PNG resp. TIF it needs libpng resp. libtiff. (so like, if you're trying to feed it a PNG and it's acting brand new, that's why β€” go get the library. πŸ™ˆ)

Valid output image extensions are .j2k, .jp2. that's it, that's the whole vibe. πŸ‘‘


✨ SYNOPSIS ✨

opj_compress -i infile.bmp -o outfile.j2k
opj_compress -ImgDir directory_name -OutFor jp2
opj_compress -h Print a help message and exit.

See JPWL OPTIONS for special options (yes, they get their own whole section, main character energy fr fr πŸ’…).


πŸŽ€ OPTIONS πŸŽ€

  • -b n,n β€” size of code block (e.g. -b 32,32). Default: 64 x 64.
  • -c n β€” size of precinct (e.g. -c 128,128). Default: 2^15 x 2^15.
  • -cinema2K fps β€” Digital Cinema 2K profile compliant codestream. Valid fps values are 24 or 48. those are the only two, don't try to be creative. 😭
  • -cinema4K β€” Digital Cinema 4K profile compliant codestream. does not need an fps: default is 24 fps. she's self-sufficient. πŸ’…
  • -d X,Y β€” offset of image origin (e.g. -d 150,300).
  • -h β€” print a help message and exit. the classic "what do I do" button. 🫢
  • -i name β€” input file name.
  • -n n β€” number of resolutions. Default: 6.
  • -o name β€” output file name.
  • -p name β€” progression order. name can be one out of: LRCP, RLCP, RPCL, PCRL, CPRL. Default: LRCP.
  • -q n β€” different psnr for successive layers.
Note: options -r and -q cannot be used together. pick a lane, bestie. πŸ’€
  • -r n β€” different compression ratio(s) for successive layers. the rate specified for each quality level is the desired compression factor.
Note: options -r and -q cannot be used together.
  • -s X,Y β€” sub-sampling factor (e.g. -s 2,2). Default: no sub-sampling in x or y direction.
Remark: sub-sampling bigger than 2 can produce errors. so like, stay in your lane at 2 and below, okay? ⚠️
  • -t W,H β€” size of tile (e.g. -t 512,512).
  • -x name β€” create index file and fill it. Default: no index file.
  • -EPH β€” write EPH marker after each header packet. Default: no EPH.
  • -F rawWidth,rawHeight,rawComp,rawBitDepth,s_or_u β€” characteristics of the raw input image.
  • -I β€” use the irreversible DWT 9-7. Default: reversible DWT 5-3. (irreversible?? she's chaotic but she serves 🌈)
  • -ImgDir directory_name β€” directory containing input files.
  • -M n β€” mode switch with values: 1, 2, 4, 8, 16, 32. Default: no mode switch activated.

Meaning:

BYPASS(1)
RESET(2)
RESTART(4)
VSC(8)
ERTERM(16)
SEGMARK(32)

Values can be added: RESTART(4) + RESET(2) + SEGMARK(32) = -M 38 β€” yes bestie, it's math. you can stack them. πŸ”₯

  • -OutFor ext β€” extension for output files.
  • -POC TtileNr=resolutionStart, componentStart, layerEnd, resolutionEnd, componentEnd, progressionOrder β€” see Examples. πŸ“
  • -ROI c=n,U=n β€” quantization indices upshifted for component c (0 or 1 or 2) with a value of U (>= 0 and <= 37). e.g. -ROI c=0,U=25.
  • -SOP β€” write SOP marker before each packet. Default: no SOP marker in the codestream.
  • -T X,Y β€” offset of the origin of the tiles (e.g. -T 100,75).
  • -W β€” see JPWL OPTIONS. (she's a gateway option, iykyk πŸ’œ)

πŸ‘‘ JPWL OPTIONS πŸ‘‘

Options usable only if the library has been compiled with -DUSE_JPWL. (so if these do nothing for you... that's why, and no, it's not your fault. 😭)

  • -W h<tilepart><=type>, s<tilepart><=method>, a=<addr>, z=<size>, g=<range>, p<tilepart:pack><=type>
    • h selects the header error protection (EPB): type can be [0=none 1,absent=predefined 16=CRC-16 32=CRC-32 37-128=RS]

if tilepart is absent, it is for main and tile headers

if tilepart is present, it applies from that tile onwards, up to the next h<> spec, or to the last tilepart in the codestream (max. 16 specs)

  • p selects the packet error protection (EEP/UEP with EPBs) to be applied to raw data: type can be [0=none 1,absent=predefined 16=CRC-16 32=CRC-32 37-128=RS]

if tilepart:pack is absent, it is from tile 0, packet 0

if tilepart:pack is present, it applies from that tile and that packet onwards, up to the next packet spec or to the last packet in the last tilepart in the stream (max. 16 specs)

  • s enables sensitivity data insertion (ESD): method can be [-1=NO ESD 0=RELATIVE ERROR 1=MSE 2=MSE REDUCTION 3=PSNR 4=PSNR INCREMENT 5=MAXERR 6=TSE 7=RESERVED]

if tilepart is absent, it is for main header only

if tilepart is present, it applies from that tile onwards, up to the next s<> spec, or to the last tilepart in the codestream (max. 16 specs)

  • g determines the addressing mode: range can be [0=PACKET 1=BYTE RANGE 2=PACKET RANGE]
  • a determines the size of data addressing: addr can be 2/4 bytes (small/large codestreams). if not set, auto-mode.
  • z determines the size of sensitivity values: size can be 1/2 bytes, for the transformed pseudo-floating point value.

🌈 EXAMPLES 🌈

opj_compress -i file.bmp -o file.j2k -r 20,10,1 (compress 20x, then 10x, then lossless).
opj_compress -i file.ppm -o file.j2k -q 30,40,50
opj_compress -i file.pgx -o file.j2k -POC T1=0,0,1,5,3,CPRL
opj_compress -i lena.raw -o lena.j2k -F 512,512,3,8,u

πŸ’œ AUTHORS πŸ’œ

Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium Copyright (c) 2002-2014, Professor Benoit Macq Copyright (c) 2001-2003, David Janssens Copyright (c) 2002-2003, Yannick Verschueren Copyright (c) 2003-2007, Francois-Olivier Devaux and Antonin Descampe Copyright (c) 2005, Herve Drolon, FreeImage Team Copyright (c) 2006-2007, Parvatha Elangovan

(genuinely iconic lineup, they built the whole thing, show some respect 🫢)


πŸ¦‹ SEE ALSO πŸ¦‹

opj_decompress(1) opj_dump(1)


okay that's the whole page, bestie!! this came to you from opj_compress, Version 2.1.1 β€” go forth and compress, you absolute legend. βœ¨πŸ‘‘πŸ’…πŸŒΈπŸ«Ά