{"id":41645340,"url":"https://github.com/awxkee/jxl-coder","last_synced_at":"2026-05-10T11:19:59.126Z","repository":{"id":189505092,"uuid":"680800626","full_name":"awxkee/jxl-coder","owner":"awxkee","description":"JPEG XL (JXL) Decoder/Encoder library for Android","archived":false,"fork":false,"pushed_at":"2025-10-23T19:34:01.000Z","size":394391,"stargazers_count":67,"open_issues_count":1,"forks_count":5,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-10-26T01:39:03.759Z","etag":null,"topics":["android","coil","decoder","encoder","jpeg-xl","jpeg-xl-android","jpeg-xl-animated","jpeg-xl-decoder","jxl","jxl-android","jxl-decoder","jxl-encoder"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/awxkee.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE-BSD.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"awxkee"}},"created_at":"2023-08-20T12:57:11.000Z","updated_at":"2025-10-23T23:55:49.000Z","dependencies_parsed_at":"2024-03-11T22:35:24.429Z","dependency_job_id":"10c9669f-2c4c-4086-8767-472a0133b36b","html_url":"https://github.com/awxkee/jxl-coder","commit_stats":null,"previous_names":["awxkee/jxl-coder"],"tags_count":83,"template":false,"template_full_name":null,"purl":"pkg:github/awxkee/jxl-coder","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awxkee%2Fjxl-coder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awxkee%2Fjxl-coder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awxkee%2Fjxl-coder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awxkee%2Fjxl-coder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/awxkee","download_url":"https://codeload.github.com/awxkee/jxl-coder/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awxkee%2Fjxl-coder/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28730318,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-24T10:24:43.181Z","status":"ssl_error","status_checked_at":"2026-01-24T10:24:36.112Z","response_time":89,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","coil","decoder","encoder","jpeg-xl","jpeg-xl-android","jpeg-xl-animated","jpeg-xl-decoder","jxl","jxl-android","jxl-decoder","jxl-encoder"],"created_at":"2026-01-24T15:20:15.048Z","updated_at":"2026-05-10T11:19:59.118Z","avatar_url":"https://github.com/awxkee.png","language":"C++","funding_links":["https://github.com/sponsors/awxkee"],"categories":[],"sub_categories":[],"readme":"# JXL (JPEG XL) Coder\n\nSupports version from Android 5.0 (API Level 21)\n\nThe JPEG XL Codec for Android is a versatile and efficient library that allows you to decode and\nencode JPEG XL (JXL) images within your Android applications. With this library, you can seamlessly\nintegrate support for the next-generation image format, providing both decoding and encoding\ncapabilities to enhance your app's image handling capabilities. Simple and convenient interface for kotlin\n\nICC profiles supported. Supports animations as well\n\n# Usage example\n\n```kotlin\n// May decode JXL images, supported RGBA_8888, RGBA_F16, RGBA_1010102, RGB_565, HARDWARE\nval bitmap: Bitmap = JxlCoder.decode(buffer) // Decode JPEG XL from ByteArray\n// If you need a sample\nval bitmap: Bitmap =\n    JxlCoder.decodeSampled(buffer, width, height) // Decode JPEG XL from ByteArray with given size\nval bytes: ByteArray = JxlCoder.encode(decodedBitmap) // Encode Bitmap to JPEG XL\n```\n\n# Convenience for conversion\n\n## Construct from JPEG or Reconstruct JPEG from JXL\n```kotlin\n// Construct JPEG XL from JPEG data\n val jxlData = JxlCoder.Convenience.construct(jpegByteArray)\n// Re-construct JPEG from JXL data\n val jpegData = JxlCoder.Convenience.reconstructJPEG(jxlByteArray)\n```\n\n## Create JPEG XL from GIF\n```kotlin\n// Construct animated JPEG XL from GIF data\n val jxlData = JxlCoder.Convenience.gif2JXL(gifByteArray)\n```\n\n## Create JPEG XL from APNG\n```kotlin\n// Construct animated JPEG XL from APNG data\n val jxlData = JxlCoder.Convenience.apng2JXL(gifByteArray)\n```\n\n# Animation Decoding\n\n```kotlin\nval animatedImage = JxlAnimatedImage(jxlBuffer) // Creates an animated image\nval frames = numberOfFrames\nval drawable =\n    animatedImage.animatedDrawable // if you just wish get an animated drawable NOT OPTIMIZED It will just render all bitmaps into one drawable\nfor (frame in 0 until frames) {\n    val frameDuration = getFrameDuration(frame)\n    val frameBitmap = getFrame(frame)\n    // Do something with frame and duration\n}\n```\n\n# Animation Encoding\n\n```kotlin\nval encoder = JxlAnimatedEncoder(\n    width = width,\n    height = width,\n)\nencoder.addFrame(firstFrame, duration = 2000) // Duration in ms\nencoder.addFrame(secondFrame, duration = 2000) // Duration in ms\nval compressedBuffer: ByteArray = encoder.encode() // Do something with buffer\n```\n\n# Add to project\n\n```groovy\nimplementation 'io.github.awxkee:jxl-coder:2.2.0' // or any version above picker from release tags\n\n// Glide JPEG XL plugin if you need one\nimplementation 'io.github.awxkee:jxl-coder-glide:2.2.0' // or any version above picker from release tags\n\n// Coil JPEG XL plugin if you need one\nimplementation 'io.github.awxkee:jxl-coder-coil:2.2.0' // or any version above picker from release tags\n```\n\n### ~~Add Jitpack repository~~ Deprecated since 2.2.0, from 2.2.0 only Maven central will receive support\n\n```groovy\nrepositories {\n    maven { url \"https://jitpack.io\" }\n}\n```\n\n```groovy\nimplementation 'io.github.awxkee:jxl-coder:2.2.0' // or any version above picker from release tags\n\n// Glide JPEG XL plugin if you need one\nimplementation 'io.github.awxkee:jxl-coder-glide:2.2.0' // or any version above picker from release tags\n\n// Coil JPEG XL plugin if you need one\nimplementation 'com.github.awxkee:jxl-coder-coil:2.1.9' // or any version above picker from release tags\n```\n\n# Self-build\n\n## Requirements\n\nlibjxl:\n\n- ndk\n- ninja\n- cmake\n- nasm\n\n**All commands are require the NDK path set by NDK_PATH environment variable**\n\n* If you wish to build for **x86** you have to add a **$INCLUDE_X86** environment variable for\n  example:*\n\n```shell\nNDK_PATH=/path/to/ndk INCLUDE_X86=yes bash build_jxl.sh\n```\n\n# Copyrights\n\nThis library created with [`libjxl`](https://github.com/libjxl/libjxl/tree/main) which belongs to\nJPEG XL Project\nAuthors which licensed with BSD-3 license\n\n# Disclaimer\n\nThe JPEG XL call for proposals talks about the requirement of a next generation image compression\nstandard with substantially better compression efficiency (60% improvement) comparing to JPEG. The\nstandard is expected to outperform the still image compression performance shown by HEIC, AVIF,\nWebP, and JPEG 2000. It also provides efficient lossless recompression options for images in the\ntraditional/legacy JPEG format.\n\nJPEG XL supports lossy compression and lossless compression of ultra-high-resolution images (up to 1\nterapixel), up to 32 bits per component, up to 4099 components (including alpha transparency),\nanimated images, and embedded previews. It has features aimed at web delivery such as advanced\nprogressive decoding[13] and minimal header overhead, as well as features aimed at image editing and\ndigital printing, such as support for multiple layers, CMYK, and spot colors. It is specifically\ndesigned to seamlessly handle wide color gamut color spaces with high dynamic range such as Rec.\n2100 with the PQ or HLG transfer function.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fawxkee%2Fjxl-coder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fawxkee%2Fjxl-coder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fawxkee%2Fjxl-coder/lists"}