# davemorrissey/subsampling-scale-image-view

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/davemorrissey-subsampling-scale-image-view).**

8,003 stars · 1,234 forks · Java · apache-2.0

## Links

- GitHub: https://github.com/davemorrissey/subsampling-scale-image-view
- awesome-repositories: https://awesome-repositories.com/repository/davemorrissey-subsampling-scale-image-view.md

## Topics

`android` `android-lib` `android-library` `android-libs` `deep-zoom-images` `large-images` `pan` `scale` `zoom-gestures` `zoom-images`

## Description

This is a custom Android view designed for rendering high-resolution images using subsampling and tiling to prevent memory overflows. It serves as an interactive image component that supports pinch-to-zoom, panning, and double-tap animations.

The project is distinguished by its rendering engine, which loads low-resolution previews and high-resolution tiles to enable the efficient navigation of massive image files. It includes a coordinate mapper that converts screen touch points into raw image pixel coordinates and vice versa during scaling and panning.

The view provides a broad set of capabilities including image gesture handling, customizable zoom constraints, and image orientation rotation. It supports the integration of custom overlays and graphics that maintain their relative position and scale during interaction. Additionally, it offers tools for monitoring image loading states and displaying rendering debug information.

## Tags

### Artificial Intelligence & ML

- [Image Tiling](https://awesome-repositories.com/f/artificial-intelligence-ml/tiled-processing/image-tiling.md) — Renders massive images by dividing them into a grid of smaller bitmap tiles to prevent memory overflows.
- [Tiled Image Renderers](https://awesome-repositories.com/f/artificial-intelligence-ml/tiled-processing/image-tiling/tiled-image-renderers.md) — Implements a rendering engine that loads low-resolution previews and high-resolution tiles for efficient navigation of massive images.

### Graphics & Multimedia

- [Tiled Image Renderers](https://awesome-repositories.com/f/graphics-multimedia/tiled-image-renderers.md) — Uses subsampling and tiling to display high-resolution images while preventing memory overflows. ([source](https://cdn.jsdelivr.net/gh/davemorrissey/subsampling-scale-image-view@master/README.md))
- [Region-Based Decoding](https://awesome-repositories.com/f/graphics-multimedia/image-editing-processing/image-editors/bitmap-transformation-tools/vector-to-bitmap-conversions/bitmap-memory-optimizers/region-based-decoding.md) — Extracts specific rectangular areas of a source file into bitmaps to avoid loading the entire image into memory.
- [Image Source Loaders](https://awesome-repositories.com/f/graphics-multimedia/image-source-loaders.md) — Supports loading images from assets, resources, bitmaps, and the file system while handling metadata rotation. ([source](https://cdn.jsdelivr.net/gh/davemorrissey/subsampling-scale-image-view@master/README.md))
- [Interactive Image Viewers](https://awesome-repositories.com/f/graphics-multimedia/interactive-image-viewers.md) — Provides an interactive component for zooming and panning through massive high-resolution visual media. ([source](https://github.com/davemorrissey/subsampling-scale-image-view/wiki/01.-Setup))
- [Subsampling Decoders](https://awesome-repositories.com/f/graphics-multimedia/media-processing-analysis/media-manipulation/media-processing-workflows/image-processing-pipelines/image-format-decoders/native-image-decoders/subsampling-decoders.md) — Loads reduced-resolution versions of image regions to minimize memory usage based on the current zoom level.
- [Screen Space Coordinate Mappings](https://awesome-repositories.com/f/graphics-multimedia/visualization-mapping/visualization-frameworks/coordinate-systems/page-coordinate-mapping/screen-space-coordinate-mappings.md) — Converts screen touch points into raw image pixel coordinates to enable precise marker placement and region detection.
- [Image Format Decoders](https://awesome-repositories.com/f/graphics-multimedia/media-processing-analysis/media-manipulation/media-processing-workflows/image-processing-pipelines/image-format-decoders.md) — Allows replacing default region and bitmap decoders with custom implementation classes to control image processing. ([source](https://github.com/davemorrissey/subsampling-scale-image-view/wiki/07.-Configuration))
- [Preview Layering](https://awesome-repositories.com/f/graphics-multimedia/visual-layer-composition/preview-layering.md) — Draws a low-resolution preview layer beneath high-resolution tiles to prevent flickering during zoom transitions.

### Mobile Development

- [Android Image Components](https://awesome-repositories.com/f/mobile-development/android-image-components.md) — Provides a specialized Android image viewing component with custom decoding, overlays, and animated zoom transitions.
- [Large Image Viewers](https://awesome-repositories.com/f/mobile-development/android-image-components/large-image-viewers.md) — Provides a custom Android view for rendering high-resolution images using subsampling and tiling to prevent memory overflows.
- [High-Performance Image Components](https://awesome-repositories.com/f/mobile-development/high-performance-image-components.md) — Displays massive images using tiling and subsampling to prevent memory crashes while keeping the interface responsive.

### User Interface & Experience

- [Image Pan and Zoom Controls](https://awesome-repositories.com/f/user-interface-experience/2d-panning-controllers/image-pan-and-zoom-controls.md) — Implements pan, pinch-to-zoom, and double-tap gestures for exploring high-resolution images.
- [Coordinate Space Mappers](https://awesome-repositories.com/f/user-interface-experience/coordinate-systems/coordinate-converters/coordinate-space-mappers.md) — Implements a coordinate mapper that converts screen touch points into raw image pixel coordinates using transformation matrices.
- [Image-to-View Coordinate Mapping](https://awesome-repositories.com/f/user-interface-experience/image-to-view-coordinate-mapping.md) — Converts raw image pixel coordinates into screen positions to anchor visual elements to specific image points. ([source](https://github.com/davemorrissey/subsampling-scale-image-view/wiki/10.-Extension))
- [Transformation Matrix Scaling](https://awesome-repositories.com/f/user-interface-experience/transformation-matrix-scaling.md) — Uses transformation matrices to calculate the image position, scale, and rotation for the final viewport.
- [Image View Components](https://awesome-repositories.com/f/user-interface-experience/ui-components/image-view-components.md) — Provides a specialized image view component that manages how images are fitted, centered, or cropped within the UI. ([source](https://github.com/davemorrissey/subsampling-scale-image-view/wiki/07.-Configuration))
- [View-to-Image Coordinate Mapping](https://awesome-repositories.com/f/user-interface-experience/view-to-image-coordinate-mapping.md) — Converts screen touch points into the original pixel coordinates of the source image to determine interaction locations. ([source](https://github.com/davemorrissey/subsampling-scale-image-view/wiki/10.-Extension))
- [Zoomable Image Views](https://awesome-repositories.com/f/user-interface-experience/zoomable-image-views.md) — Ships an interactive image component with support for pinch-to-zoom, panning, and double-tap animations.
- [Image Previewers](https://awesome-repositories.com/f/user-interface-experience/content-display-components/image-previewers.md) — Displays a low-resolution placeholder image to keep the interface responsive while the high-resolution version loads. ([source](https://github.com/davemorrissey/subsampling-scale-image-view/wiki/03.-Preview-images))
- [Image Overlays](https://awesome-repositories.com/f/user-interface-experience/content-rendering-components/image-overlays.md) — Draws markers on top of images that maintain their relative position and scale during panning and zooming. ([source](https://github.com/davemorrissey/subsampling-scale-image-view/wiki/10.-Extension))
- [Custom Interaction Patterns](https://awesome-repositories.com/f/user-interface-experience/custom-interaction-patterns.md) — Allows overriding default touch behaviors to implement custom interaction patterns while preserving standard view actions. ([source](https://github.com/davemorrissey/subsampling-scale-image-view/wiki/10.-Extension))
- [Image Annotation Tools](https://awesome-repositories.com/f/user-interface-experience/image-annotation-tools.md) — Supports drawing synchronized markers and graphics on top of images that maintain their relative position during interaction.
- [View Property Animators](https://awesome-repositories.com/f/user-interface-experience/view-customizations/property-view-providers/view-property-animators.md) — Uses property animators to smoothly transition the scale and center point of the image. ([source](https://cdn.jsdelivr.net/gh/davemorrissey/subsampling-scale-image-view@master/README.md))
- [Double-Tap Zooming](https://awesome-repositories.com/f/user-interface-experience/viewport-navigation-controls/zoom-animations/gesture-based-zooming/double-tap-zooming.md) — Automatically animates the zoom level and focal point when a user double-taps the image. ([source](https://github.com/davemorrissey/subsampling-scale-image-view/wiki/07.-Configuration))
- [Scaling Animations](https://awesome-repositories.com/f/user-interface-experience/viewport-navigation-controls/zoom-animations/scaling-animations.md) — Implements animations that scale and move the image relative to specific anchor points using easing functions. ([source](https://github.com/davemorrissey/subsampling-scale-image-view/wiki/08.-Animation))
- [Zoom Constraints](https://awesome-repositories.com/f/user-interface-experience/zoom-constraints.md) — Defines minimum and maximum zoom levels using pixel ratios and density-aware settings to limit scaling. ([source](https://github.com/davemorrissey/subsampling-scale-image-view/wiki/07.-Configuration))
