Image Toolbox

repository·master·Indexed 12 days ago

https://github.com/t8rin/imagetoolbox

A versatile Android image editing application for photo manipulation, featuring cropping, filtering, EXIF editing, and AI-powered tools like background removal and upscaling. Built with Kotlin and Jetpack Compose, it supports extensive format conversion (HEIF, AVIF, WEBP, JXL), OCR in 120+ languages, PDF management, and batch processing. It includes a wide array of scaling algorithms, color spaces, and 61 built-in export profiles for social media platforms.

Tokens
5.2K
Snippets
13
Records
26
Agent score
95%

What's inside Image Toolbox

  1. Overview of Image Toolbox

    master

    Image Toolbox is a versatile image editing tool designed for efficient photo manipulation. It supports a wide range of capabilities including:

    • Basic Editing: Cropping and applying filters.
    • Metadata Management: Editing EXIF data.
    • Advanced Manipulation: Erasing backgrounds and enhancing images using AI.

    The tool is built using Kotlin, Jetpack Compose, and targets Android API 24+.

    It is designed to be useful for both photographers and developers, offering a simple interface for powerful image processing tasks.

  2. Explore Image Toolbox features

    master

    Image Toolbox is a comprehensive image processing suite that supports batch processing and complex filter chains. Key capabilities include:

    • Advanced Filtering: Over 500 filters including color adjustments (Saturation, Contrast, Hue), blurs (Gaussian, Box, Stack, Median), distortions (Swirl, Bulge, Sphere), and artistic effects (Sketch, Toon, Oil, Watercolor).
    • Texture Generation: Over 130 presets like Brushed Metal, Marble, Nebula, and various organic/mathematical textures.
    • AI-Powered Tools: Upscaling, Background Removal (using models like U2Net, RMBG, InSPyReNet, etc.), DeNoise, and Style Transfer.
    • OCR (Optical Character Recognition): Extract text from images in 120+ languages using Tesseract or PaddleOCR (v5/v6).
    • Format Conversion & Transcoding: Extensive support for HEIF, AVIF, WEBP, JXL, PNG, JPEG, and more, including animated formats like GIF and APNG.
    • PDF Management: Tools for merging, splitting, rotating, compressing, and converting PDF to/from images.
    • Barcode/QR Code: Scanning and creating various formats including QR CODE, AZTEC, DATA MATRIX, and EAN/UPC.
    • Color Utilities: Palette generation (Material You), color picking, and advanced tone curve applications.
    • Batch Operations: Batch renaming with patterns, batch cropping, and batch processing of filter chains.
    • Security: File encryption and decryption using 100+ algorithms.
  3. Review the Image Toolbox Tech Stack

    master

    Image Toolbox is built using a modern Android tech stack. Developers looking to extend or understand the project should note the following core dependencies:

    • Language & Core: Kotlin, Coroutines (async work), and Flow (reactive data layers).
    • UI Framework: Jetpack Compose and Material You Kit.
    • Architecture: Decompose (KMP lifecycle-aware BLoCs with routing) and Hilt (dependency injection).
    • Image Processing:
      • Loading: Coil.
      • Filters (GPU): GPU Image.
      • Filters (CPU): Aire and Trickle (using native C++ code).
      • AI Tools: DeJpeg.
      • Codecs: AVIF Coder and JXL Coder (supporting avif, heic, heif, and jxl).
    • Theming: Dynamic Theme (for custom color theming and Monet implementation).
    • Other: Modal Sheet (M3 guidelines), Konfetti (particle systems), and Data Store (asynchronous data storage).
  4. Install and build Image Toolbox from source

    master

    To build the application from the source code, follow these steps:

    1. Clone the repository:
      git clone https://github.com/yourusername/ImageToolbox.git
    2. Install dependencies using your preferred package manager (e.g., Gradle).
    3. Build the project using the Gradle wrapper:
      ./gradlew build
    4. Run the application:
      ./gradlew run
    # Clone the repository
    git clone https://github.com/yourusername/ImageToolbox.git
    
    # Build the project
    ./gradlew build
    
    # Run the application
    ./gradlew run
  5. Download Image Toolbox

    master

    You can download Image Toolbox through several platforms:

    • Google Play Store: For standard Android installation.
    • F-Droid: For open-source enthusiasts.
    • GitHub Releases: To download the latest .apk directly.
    • Obtainium: To manage updates via the Obtainium app (available for both stable and pre-release versions).
  6. Customize the Image Toolbox UI

    master

    Image Toolbox offers extensive UI customization options to tailor the user experience. Key customization areas include:

    • Color Schemes: Use custom palettes, predefined schemes, color inversion, contrast adjustment, or image-based color schemes. The app supports dynamic coloring based on wallpapers (Monet implementation) even on Android versions below 12 via Dynamic Theme.
    • Typography: Choose from preinstalled fonts (e.g., Montserrat, Comfortaa, JetBrains Mono, etc.) or import custom OTF/TTF fonts. You can also adjust the in-app font scale.
    • Component Styles:
      • Switches: Select between Material You, Compose, Pixel, Fluent, Cupertino, or Liquid Glass (HyperOS).
      • Sliders: Choose between Fancy, Material You, Material, or HyperOS styles.
      • Shapes: Adjust icon background shapes (Rounded Corners, Squircle, Octagon, Heart, etc.) and slider/shape sizes.
      • Confetti: Select types like Default, Festive, Explode, Rain, Side, Corners, or ImageToolbox.
    • Layout & Visuals: Control border thickness, shadow visibility, haptics, light/dark/AMOLED modes, and main screen layout.
  7. Configure Animated JXL support in Coil

    master

    To support animated JXL (JPEG XL) images in your Coil ImageLoader, add the AnimatedJxlDecoder.Factory to your ImageLoader configuration.

    By default, the decoder enables animation. If you are using the decoder to convert JXL images to other formats (where you only need a static frame), you can disable animation by calling enableJxlAnimation(false) on your ImageRequest.Builder.

    Factory Parameters

    • preheatFrames: The number of frames to pre-load (default is 6).
    • exceptionLogger: An optional lambda to handle decoding exceptions ((Exception) -> Unit)?.

    Note that enableJxlAnimation is a custom extra that only affects requests processed by the AnimatedJxlDecoder.

    val imageLoader = ImageLoader.Builder()
        .components {
            add(AnimatedJxlDecoder.Factory(preheatFrames = 10))
        }
        .build()
  8. Reference available scaling algorithms

    master

    When resizing images, Image Toolbox provides a wide array of scaling methods to control quality and sharpness:

    • Standard: Bilinear, Nearest Neighbour, Cubic, Bicubic, Hermite, B-Spline.
    • Advanced/EWA: Ewa Hanning, Ewa Robidoux, Ewa Blackman, Ewa Quadric, Ewa Lanczos 3 Jinc.
    • Lanczos Family: Lanczos 2, Lanczos 3, Lanczos 4, Lanczos 6, and various Jinc/Sharp/EWA variants.
    • Other: Mitchell-Netravalli, Catmull-Rom, Hamming, Blackman, Welch, Quadric, Gaussian, Sphinx, Bartlett, Robidoux, Spline (16, 36, 64), Kaiser, Box, Bohman, Magic Kernel (including Sharp 2013 and 2021).
    - Bilinear
    - Nearest Neighbour
    - Cubic
    - Mitchell-Netravalli
    - Catmull-Rom
    - Hermite
    - B-Spline
    - Hann
    - Bicubic
    - Hamming
    - Hanning
    - Blackman
    - Welch
    - Quadric
    - Gaussian
    - Sphinx
    - Bartlett
    - Robidoux
    - Robidoux Sharp
    - Spline 16
    - Spline 36
    - Spline 64
    - Kaiser
    - Bartlett-Hann
    - Box
    - Bohman
    - Lanczos 2
    - Lanczos 3
    - Lanczos 4
    - Lanczos 2 Jinc
    - Lanczos 3 Jinc
    - Lanczos 4 Jinc
    - Ewa Hanning
    - Ewa Robidoux
    - Ewa Blackman
    - Ewa Quadric
    - Ewa Robidoux Sharp
    - Ewa Lanczos 3 Jinc
    - Ginseng
    - Ginseng EWA
    - Lanczos Sharp EWA
    - Lanczos 4 Sharpest EWA
    - Lanczos Soft EWA
    - Haasn Soft
    - Lagrange 2
    - Lagrange 3
    - Lanczos 6
    - Lanczos 6 Jinc
    - Magic Kernel
    - Magic Kernel Sharp 2013
    - Magic Kernel Sharp 2021
  9. Reference available export profiles

    master

    Image Toolbox includes 61 built-in export profiles optimized for web publishing and social media platforms. Examples include:

    • Web: Optimized (up to 1920 px), Thumbnail (up to 640 px).
    • Instagram: Square Post (1080×1080), Portrait Post (1080×1440), Landscape Post (1080×566), Story (1080×1920), Reel Cover (1080×1920), Profile Picture (320×320).
    • Facebook: Landscape Post (1200×630), Square Post (1080×1080), Story (1080×1920), Page Cover (851×315), Event Cover (1920×1005), Profile Picture (320×320).
    • X (Twitter): Landscape Post (1600×900), Square Post (1080×1080), Portrait Post (1080×1350), Header (1500×500), Profile Picture (400×400).
    • YouTube: Video Thumbnail (3840×2160), Channel Banner (2560×1440), Channel Picture (800×800), Community Post (1200×1200).
    • TikTok: Portrait Post (1080×1920), Landscape Post (1200×628), Square Post (640×640), Profile Picture (200×200).
    • Other Platforms: Threads, Bluesky, LinkedIn, Pinterest, VK, Reddit, Snapchat, Behance, GitHub, Telegram, Discord, Twitch.
  10. Verify Image Toolbox Signing Certificate Hashes

    master

    To ensure the legitimacy of your download, you can verify the application using the following SHA-256, SHA-1, and MD5 hashes:

    • SHA-256: 20d7689de0874f00015ea3e31fa067c15c03457d362d41d5e793db3a864fa534
    • SHA-1: d69eacb30eeae804e8b72d2384c3c616b1906785
    • MD5: db6f6b76c503d31099e4754e676353cf
  11. Reference available scaling color spaces

    master

    Image resizing can be performed using different scale color spaces to manage color accuracy and gamma:

    • Standard: Linear, sRGB, XYZ.
    • LUV/LAB/LCH: LAB, LUV, LCH.
    • Oklab/Oklch: Oklab sRGB, Oklab Rec.709, Oklab Gamma 2.2, Oklab Gamma 2.8, Oklab LCH.
    • Jzazbz: Jzazbz sRGB, Jzazbz Rec.709, Jzazbz Gamma 2.2, Jzazbz Gamma 2.8.
    • Gamma/F32: F32 Gamma 2.2, F32 Gamma 2.8, F32 Rec.709, F32 sRGB.
    • Other: Sigmoidal.
    - Linear
    - sRGB
    - LAB
    - LUV
    - Sigmoidal
    - XYZ
    - F32 Gamma 2.2
    - F32 Gamma 2.8
    - F32 Rec.709
    - F32 sRGB
    - LCH
    - Oklab sRGB
    - Oklab Rec.709
    - Oklab Gamma 2.2
    - Oklab Gamma 2.8
    - Jzazbz sRGB
    - Jzazbz Rec.709
    - Jzazbz Gamma 2.2
    - Jzazbz Gamma 2.8