Skip to content

Releases: davemorrissey/subsampling-scale-image-view

Parallel image loading support, content URI EXIF rotation

30 Sep 19:38
Compare
Choose a tag to compare
  • #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

Cached bitmap flag, FloatMath replacement

30 Aug 09:13
Compare
Choose a tag to compare
  • 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.

Error reporting and preview fixes

14 Jun 16:59
Compare
Choose a tag to compare
  • #72 Report errors when decoder returns null bitmap
  • #78 Fixed NPE and incorrect tile map initialisation when initial state is used with a preview

Matrix rotation

24 Mar 22:35
Compare
Choose a tag to compare
  • #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.

Reverted matrix tile rotation

15 Mar 20:08
Compare
Choose a tag to compare
  • 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!

Tile size bug fix

15 Mar 10:38
Compare
Choose a tag to compare
  • Fixed a potential issue with images very close to a multiple of the canvas maximum bitmap size

Matrix rotation, moiré fix

10 Mar 08:30
Compare
Choose a tag to compare
  • #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.

Preview images, combined classes, event listener, region

08 Mar 21:59
Compare
Choose a tag to compare

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.

Quick scale, improved padding support

23 Feb 21:33
Compare
Choose a tag to compare
  • #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

Custom decoder

12 Jan 21:52
Compare
Choose a tag to compare

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.