OpenSlide Python 1.0.1 fixes documentation build failures.
OpenSlide Python 1.0.0 declares a stable API and adds documentation.
OpenSlide Python 0.5.1 fixes exceptions on Python 2.6 and with the classic PIL library.
OpenSlide 3.4.0 adds support for Hamamatsu NDPI, Leica slides with multiple coplanar main images, MIRAX slides with PNG and BMP encodings, Sakura SVSLIDE, and Ventana BIF (preliminary). It also changes the Leica level size/origin to encompass the entire slide, and improves compatibility with certain MIRAX slides.
API changes: added new properties giving the bounds of the non-empty slide region, added
OpenSlide Java 0.12.0 updates the API for OpenSlide 3.4.0 and fixes a
NullPointerException when opening slides without a quickhash1.
OpenSlide Python 0.5.0 updates the API for OpenSlide 3.4.0, adds Python 3 support, returns Unicode strings on Python 2, adds a
DeepZoomGenerator option to render only the non-empty slide region, corrects Deep Zoom tile positions for Aperio slides, fixes initialization on MacPorts, and improves the Deep Zoom example tools.
Windows build 20130727 prevents libtiff from opening a dialog box upon encountering an invalid TIFF file.
Version 3.3.3 fixes inclusion of
openslide.h with MSVC and adds minor compatibility improvements for Aperio JP2K and Hamamatsu slides.
Windows build 20130413 also fixes a runtime crash when linked with
Older news is available here.
OpenSlide is a C library that provides a simple interface to read whole-slide images (also known as virtual slides). The current version is 3.4.0, released 2014-01-25.
Python and Java bindings are also available. The Python binding includes a Deep Zoom generator and a simple web-based viewer. The Java binding includes a simple image viewer.
OpenSlide and its official language bindings are released under the terms of the GNU Lesser General Public License, version 2.1.
The library can read virtual slides in the following formats:
It provides a simple C interface for programmers to use to decode images of these kinds.
See how some projects use OpenSlide.
There is a web-based demo of OpenSlide rendering various slide formats.
Some documentation is included within the downloadable files. Additionally there is:
First, try the search box at the top of the page. It covers the OpenSlide website, mailing list, issue tracker, and wiki.
There are two mailing lists for OpenSlide:
Users mailing list. Once subscribed, anyone can post. This list is for asking questions about OpenSlide.
Announcement mailing list. It is a low-volume list and is moderated. All users are recommended to subscribe to this list.
Development of OpenSlide happens on GitHub:
Some freely-distributable test data is available.
The design and implementation of the library are described in a published technical note:
OpenSlide: A Vendor-Neutral Software Foundation for Digital Pathology
Adam Goode, Benjamin Gilbert, Jan Harkes, Drazen Jukic, M. Satyanarayanan
Journal of Pathology Informatics 2013, 4:27
Abstract HTML PDF
There is also an older technical report:
Whole-slide images, also known as virtual slides, are large, high resolution images used in digital pathology. Reading these images using standard image tools or libraries is a challenge because these tools are typically designed for images that can comfortably be uncompressed into RAM or a swap file. Whole-slide images routinely exceed RAM sizes, often occupying tens of gigabytes when uncompressed. Additionally, whole-slide images are typically multi-resolution, and only a small amount of image data might be needed at a particular resolution.
There is no universal data format for whole-slide images, so each vendor implements its own formats, libraries, and viewers. Vendors typically do not document their formats. Even when there is documentation, important details are omitted. Because a vendor’s library or viewer is the only way to view a particular whole-slide image, doctors and researchers can be unnecessarily tied to a particular vendor. Finally, few (if any) vendors provide libraries and viewers for non-Windows platforms. Some have gone with a server approach, pushing tiles through a web server, or using Java applets, but these approaches have shortcomings in high-latency or non-networked environments.