Subsampling Scale Image View Versions Save

Android library (AAR). Highly configurable, easily extendable deep zoom view for displaying huge images without loss of detail. Perfect for photo galleries, maps, building plans etc.

v3.3.0

8 years ago
  • #98 Support EXIF rotation for content URIs
  • #110 Avoid recycling of cached bitmap when view is reset
  • #114 Workaround for URL encoded file paths
  • #120 Option to use thread pool executor for image loading to avoid the view being blocked by other AsyncTasks
  • Skip loading of tiles that have gone off screen while queued for loading

v3.2.0

8 years ago
  • PR #89 Option to declare a supplied bitmap as cached to prevent recycling, for compatibility with image loader libraries.
  • PR #106 Replace FloatMath with Math for SDK 23 support.

v3.1.4

8 years ago
  • #72 Report errors when decoder returns null bitmap
  • #78 Fixed NPE and incorrect tile map initialisation when initial state is used with a preview

v3.1.3

9 years ago
  • #48 Matrix tile rotation restored now using Matrix.setPolyToPoly to eliminate rounding errors that caused gaps between tiles. Temporary 2048px limit on tile dimensions removed.

v3.1.2

9 years ago
  • Using a matrix to rotate tiles causes rounding errors resulting in intermittent black lines between them, so this change has been reverted.
  • Tile size is temporarily capped at 2048x2048 to reduce the likelihood of OOMEs while creating rotated copies.

Remember to check your PNGs do not have an alpha layer to reduce the chance of an OOME, especially when using rotation!

v3.1.1

9 years ago
  • Fixed a potential issue with images very close to a multiple of the canvas maximum bitmap size

v3.1.0

9 years ago
  • #48 Use a matrix to draw tiles so there's no need to create a rotated copy of each tile. Better performance and reduced memory usage.
  • #49 Turned off bitmap dithering to remove moiré patterns.

v3.0.0

9 years ago

This release includes breaking changes. Migrating activities and subclasses to the new version is simple, please see the notes in the README.

  • Combined ScaleImageView and SubsamplingScaleImageView into one class. Tiling can be enabled or disabled as appropriate. SubsamplingScaleImageView can now display a bitmap.
  • Refactored ready events. When onReady is called, the view is ready to display an image (in previous versions this only indicated the source dimensions were known).
  • Simplified method of specifying the source image, reducing the proliferation of setImage... methods.
  • #37 Allow use of a preview image from resources, assets, filesystem or bitmap to enable gestures while a large full size image is loading.
  • #46 Display a specified region of the source file.
  • #40 Listener interface can be used to receive load errors and ready events.
  • #41 No objects allocated in onDraw or onTouchEvent to improve efficiency.
  • Fixed a bug with tile sizes that resulted in the last few pixels of some images being cropped.
  • Fixed a bug with double tap zoom not respecting disabled pan.
  • Fixed incorrect requested centre point after size change.

v2.4.0

9 years ago
  • #11 Public recycle method
  • #39 Fixed a bug with setMinimumScaleType(CUSTOM) causing centre to be set to NaN
  • #39 Improved padding support - image is initially scaled to fit inside the padding box and scales to the full view size
  • #44 Quick scale (one finger zoom) support, with thanks to @GranPC

v2.3.0

9 years ago

Bitmap decoding extracted to an interface to allow a custom implementation to be written using a different library, as a workaround for problems with the native skia library.

Requested in #33, also provides a solution for #22 and #23.