{"id":"image-jpm","mimeType":"image/jpm","name":"JPEG 2000 Compound Image File Format","shortName":"JPM","category":"Document \u0026 Archival","extensions":[".jpm",".jpgm"],"description":"JPM is Part 6 of the JPEG 2000 standard. It is a compound document format that utilizes the Mixed Raster Content (MRC) imaging model to divide scanned pages into multiple layers (e.g., text, foreground, and background). This allows each layer to be independently compressed with the most efficient algorithm (such as JPEG 2000 for images and JBIG2 for text), resulting in highly optimized file sizes for complex documents.","seo":{"title":"image/jpm MIME Type | Complete Developer Reference \u0026 Magic Bytes","description":"Complete reference for the image/jpm MIME type: magic bytes, software support, HTTP headers, developer snippets, and technical specifications for JPEG 2000 compound documents.","faqs":[{"question":"What is the difference between JP2 and JPM?","answer":"While both belong to the JPEG 2000 family, JP2 (Part 1) is designed for single, continuous-tone still images. JPM (Part 6) is a compound document format designed for multi-page, multi-layered documents, similar in purpose to PDF or DjVu, allowing mixed compression methods within a single page."},{"question":"What is the magic byte for a JPM file?","answer":"JPM files begin with the standard JPEG 2000 12-byte signature box (00 00 00 0C 6A 50 20 20 0D 0A 87 0A). They are uniquely identified by the 'ftyp' box that immediately follows, containing the major brand 'jpm ' (6A 70 6D 20 in hex)."},{"question":"Can I open JPM files in a web browser?","answer":"No. Modern web browsers do not natively support JPM files. They require specialized document viewers, or they must be converted to standard web formats like PDF or standard images for viewing."}]},"index":{"compression":["Lossy","Lossless","Mixed Raster Content (MRC)"],"browserSupport":{"score":1,"label":"None"},"commonUses":["Scanned Document Archiving","Mixed Raster Content (MRC) Imaging","Digital Libraries"]},"technical":{"magicBytes":{"hex":"00 00 00 0C 6A 50 20 20 0D 0A 87 0A ... 66 74 79 70 6A 70 6D 20","ascii":"....jP  ........ftypjpm "},"container":"ISOBMFF / JPM (ISO/IEC 15444-6)","compressionAlgorithm":["JPEG 2000","JBIG2","JPEG","MMR"],"colorDepth":["1-bit (Text/Masks)","8-bit","16-bit","24-bit"],"transparency":true,"animation":false,"metadata":{"exif":true,"xmp":true,"iccProfile":true},"alphaChannel":true,"progressiveLoading":true,"hdrSupport":false},"history":{"developer":"Joint Photographic Experts Group (JPEG)","released":"2003","specification":"ISO/IEC 15444-6 (JPEG 2000 Part 6)"},"browserSupport":{"chrome":false,"chromeVersion":"None","firefox":false,"firefoxVersion":"None","safari":false,"safariVersion":"None","edge":false,"edgeVersion":"None","internetExplorer":false},"softwareSupport":[{"name":"Kakadu Software","logo":""},{"name":"LuraDocument (Foxit)","logo":""},{"name":"OpenJPEG","logo":""}],"conversion":{"convertTo":["tiff","jp2","jpeg"],"convertFrom":["tiff","djvu"]},"developer":{"httpHeaders":[{"header":"Content-Type","value":"image/jpm"}],"htmlAccept":"image/jpm, .jpm","fileDetection":["Check the first 12 bytes for the JPEG 2000 signature box (00 00 00 0C 6A 50 20 20 0D 0A 87 0A)","Verify the following File Type (ftyp) box contains the major brand string 'jpm ' (6A 70 6D 20)"]},"prosCons":{"pros":["Highly optimized for scanned documents, drastically reducing file sizes without sacrificing the readability of text or the quality of embedded photos","Supports multi-page documents within a single file","Object-based architecture allows for complex layout representation and independent extraction of elements"],"cons":["Failed to achieve widespread adoption, largely being overshadowed by PDF/A and DjVu","Zero native web browser compatibility","Requires complex, specialized software to properly encode and decode the multi-layered MRC structure"]},"specifications":{"url":"https://jpeg.org/jpeg2000/","rfc":"RFC 3745","mimeAliases":["application/jpm"]},"developerSnippets":{"python":"import magic\nprint(magic.from_file('document.jpm', mime=True)) # May default to generic 'image/jp2' depending on libmagic rules","nodejs":"const FileType = require('file-type');\nconst type = await FileType.fromFile('document.jpm');\nconsole.log(type?.mime); // Standard libraries may struggle to differentiate JPM from standard JP2","go":"import \"net/http\"\n// Custom ISOBMFF parsing is required to read the 'jpm ' brand inside the ftyp box.","php":"$mime = mime_content_type('document.jpm');\necho $mime; // Standard implementations often map this to application/octet-stream"},"relatedFormats":["jp2","djvu","tiff"]}
