Be notified of new releases
Create your free GitHub account today to subscribe to this repository for new releases and build software alongside 28 million developers.Sign up
- The exploded application is more reliably cleaned up at shutdown when running in standalone mode.
- KakaduNativeProcessor supports JPEG2000-compatible JPX source images.
- Fixed an error from KakaduDemoProcessor in Windows when using a system locale that uses characters other than periods as decimal separators.
- Fixed incorrect redaction positioning when scaling.
- Fixed an error from processors that use a Java 2D processing pipeline when attempting to scale a source image that is natively less than three pixels in either dimension, or has been cropped to that size.
- Fixed an empty response when image overlays are enabled but the overlay pathname or URL is invalid. Instead, images are served without the overlay, and warnings logged.
- Updated Jetty to version 9.4.12, which fixes a potential connection leak in long-running servers when using HttpSource. (Thanks to @giancarlobi)
- Miscellaneous other dependency updates.
- Fixed a regression introduced in 3.4.3 that could cause URIs to appear with the wrong scheme in information responses and
Linkheaders. (Thanks to @mmatela and @jweisman)
- Fixed a bug that caused the minimum tile size in IIIF Image API 2.x information responses to be 512 regardless of the setting of
- Fixed a connection leak in HttpSource.
- Improved the resiliency of the internal JPEG2000 parser used by KakaduDemoProcessor and OpenJpegProcessor.
- Fixed KakaduNativeProcessor's handling of
- Removed an error message that would appear in the log when the delegate script file was not found but the delegate script was disabled.
X-Forwarded-Hostreverse proxy header may contain a port number, which will be used if
X-Forwarded-Portis not supplied.
- A new
X-Forwarded-IDreverse proxy header replaces
X-IIIF-ID, which has been deprecated, and will be removed in a future version.
- Error response representations are in
text/plainformat in the absence of a client preference.
endpoint.iiif.content_dispositionis set to
Content-Dispositionheader value includes a filename-safe version of the image identifier.
- Resolvers have been renamed sources to better reflect their core function.
- AmazonS3Resolver has been renamed S3Source, and it now supports non-AWS endpoints.
- S3Source supports a configurable path prefix and suffix when using
- AzureStorageSource supports shared access signature (SAS) URIs. (Thanks to @ddisciascio)
- Improved the efficiency of source cache content access when
cache.server.resolve_first = false.
- All sources fall back to checking the magic bytes in image data if they cannot infer a format any other way.
- KakaduProcessor has been renamed KakaduDemoProcessor to reflect the fact that it interfaces with the Kakadu demo tool,
kdu_expand, and not the native library.
- Added KakaduNativeProcessor, as well as compiled binaries for Linux, macOS, and Windows, which are free to use with it for non-commercial purposes.
DownloadStrategyas another optional retrieval strategy for stream-based processors, and as an optional fallback strategy. This enables all processors to work with all sources with no extra configuration.
- JPEG2000-compatible JPX images are readable by all processors that support JPEG2000.
- JaiProcessor has been deprecated. See the user manual for more information.
- KakaduDemoProcessor and OpenJpegProcessor work in Windows.
- KakaduDemoProcessor and OpenJpegProcessor read image metadata using custom code, which is more efficient than using the respective
opj_dumptools, and enables them to read the number of decomposition levels, which improves reliability when decoding images with less-common level counts.
- Image I/O plugins can be selected on a per-format basis.
- Improved the efficiency of the Java 2D resample filters.
- When using the Java 2D pipeline to downscale to less than three pixels on a side, an empty image with the correct dimensions is returned, rather than a downscaled 3x3 image, which is the smallest size that the Java 2D resample filters support.
- Java2dProcessor supports animated GIFs.
- Java2dProcessor supports CMYK & YCCK JPEGs.
- Worked around some behavior of the
opj_decompresstool that could cause OpenJpegProcessor to break. (Thanks to @adam-vessey)
- Improved PdfBoxProcessor's validation of requests for multi-page PDFs whose pages have inconsistent dimensions.
processor.limit_to_8_bitsconfiguration option is no longer available. All output is limited to 8 bits.
- Disabled support for GIF source images in JaiProcessor, as it was buggy and other processors can handle GIF better.
- AmazonS3Cache has been renamed S3Cache, and it now supports non-AWS endpoints.
- The time-to-live of the source and derivative caches is independently configurable.
- The cache worker dumps the contents of HeapCache during its shifts, if both are enabled and if HeapCache persistence is also enabled.
- The cache worker's work interval specifies the amount of time between the end of one shift and the beginning of the next, rather between the start of one shift and the next.
- The deprecated
DELETE /cache/:identifierHTTP API method has been removed.
- The delegate script has been redesigned as a class that is instantiated per-request. See the "Delegate Script" section of the user manual for detailed information.
- Java 10 (18.3) is supported.
- Updated JRuby to 188.8.131.52.
- Updated the Jackson dependency to address the following security vulnerabilities: CVE-2018-7489, CVE-2018-5968, CVE-2017-15095.
- AmazonS3Resolver and AmazonS3Cache can obtain credentials from Amazon container environment variables or EC2 Instance Metadata Service.
X-Forwardedheaders are respected without
X-Forwarded-Hostneeding to be set. (Thanks to @jweisman)
- Fixed a potential resource leak involving stream-based resolvers.
- Fixed HttpResolver's handling of semicolon-delimited
- Fixed palette corruption when cropping source images with indexed color with Java2dProcessor.
- Fixed a
NullPointerExceptionwhen using the info cache without a derivative cache.
- Other minor fixes.
- Fixed a leak when using HttpResolver in a Servlet container that resulted in an inability to shut down properly. (Thanks to @punkfairy)
- Fixed aspect-fit scale-to-height not working properly in ImageMagickProcessor and GraphicsMagickProcessor.
- Fixed incorrect URIs in responses when using slash substitution or URI-encoded identifiers.
- Efficiency improvements in AmazonS3Resolver and AzureStorageResolver.
OutOfMemoryErrors during image responses are logged at error level rather than info-level.
- Improved the reliability of ImageIO plugin selection.
- Updated the PDFBox dependency to version 2.0.8.
- Improved efficiency when handling a request for a bitonal or gray image when the source image is already bitonal or gray. (Thanks to @adam-vessey)
- Fixed upscaling by percent in KakaduProcessor and OpenJpegProcessor.
- Efficiency improvements in PdfBoxProcessor.
- Improved the reliability of source cache downloading and content acquisition.
- Miscellaneous reliability improvements in AmazonS3Resolver and AmazonS3Cache.
- Fixed certain server misconfigurations causing HTTP 400 (Bad Request) responses rather than HTTP 500 (Internal Server Error).
- HTTP/2 can be enabled in standalone mode. (H2 requires Java 9, but H2C works in Java 8.)
- The accept queue limit of the standalone HTTP & HTTPS servers is configurable.
- The minimum size in IIIF Image API 2.x
info.jsonresponses is configurable. (Thanks to @cbeer)
- The maximum size in IIIF Image API 2.x
info.jsonresponses is the full image size, rather than half size. (Thanks to @cbeer)
- The IIIF Image API 1.x endpoint returns a JPEG image, rather than GIF, when no client preference is expressed in the URI or
- Certain derivative cache errors can be recovered from without causing an error response.
sizeskey in Image API 2.x information responses respects the
- Image and information endpoints return
501 Not Implemented, rather than
500 Internal Server Error, when the selected processor does not support the requested source format.
- Image requests may include a
?response-content-dispositionquery argument to suggest a response
- Added several HTTP API methods for cache management.
- Changes to HTTP Basic authorization settings in all endpoints take effect without restarting.
- All endpoints support the HTTP
- Status items in the Control Panel update automatically via AJAX.
- The username used to access the Control Panel is configurable.
- Miscellaneous efficiency improvements across all resolvers.
HttpResolver::get_url()delegate method may return a hash containing authentication credentials.
- Added an option to HttpResolver to trust all certificates.
- The request timeout of HttpResolver is configurable.
- AmazonS3Resolver and AzureStorageResolver attempt to infer a source format from the object/blob key if not able to do so from the identifier or from object/blob metadata.
- The maxmimum number of AWS connections used by AmazonS3Resolver is configurable.
- AmazonS3Resolver falls back to obtaining credentials from various other sources (see the user manual) when they are not set in the configuration file. (Thanks to @jweisman)
- Resolver delegates are passed an additional
contextargument. (Thanks to @jonathangreen)
- Added an option that enables Java2dProcessor, JaiProcessor, KakaduProcessor, and PdfBoxProcessor to preserve the sample depth of >8-bits-per-sample source images.
- GraphicsMagickProcessor and ImageMagickProcessor respect the
- GraphicsMagickProcessor supports the GIF output format.
- ImageMagickProcessor supports image overlays.
- FfmpegProcessor supports FLV videos.
processor.background_colorconfiguration key affects alpha blending as well as non-90°-multiple rotations. (Thanks to @Algae666)
- ImageMagickProcessor's support for ImageMagick versions prior to 7 is deprecated.
- OpenJpegProcessor's support for OpenJPEG versions prior to 2.2.0 is deprecated.
- Improved the predictability of ImageIO plugin selection.
- Initialization warnings (related to missing dependencies, for example) are displayed in the Control Panel.
- Image info is written to caches asynchronously to enable faster responses.
- Added an optional in-memory image info cache.
- Added RedisCache.
- Added HeapCache.
- AmazonS3Cache uploads images to S3 asynchronously, enabling faster responses.
- The maxmimum number of AWS connections used by AmazonS3Cache is configurable.
- AmazonS3Cache falls back to obtaining credentials from various other sources (see the user manual) when they are not set in the config file. (Thanks to @jweisman)
- On macOS, FilesystemCache uses file last-modified times rather than last-accessed times as the latter are not reliable.
- Configuration files support inheritance via an
- The temporary directory is configurable.
- Added an optional error log.
- A logger is accessible from the delegate script.
- Fixed FilesystemCache failing to purge invalid source images. (Thanks to @jhosteny)
- Fixed the
cache.server.resolve_firstconfiguration key always being effectively
truein the IIIF Image API 2.x endpoint.
- Fixed AmazonS3Cache sometimes purging fewer objects than it should.
- Fixed failure to auto-purge incompletely-written images from derivative caches other than FilesystemCache in response to a VM error (such as
- HttpResolver makes fewer HTTP requests.
- Fixed an
AbstractMethodErrorin HTML views, caused by a regression in 3.3.3.
- Fixed the
X-IIIF-IDheader not being respected when redirecting from
/:identifier/info.jsonin both IIIF Image API endpoint versions. (Thanks to @jonathangreen)