Giter Club home page Giter Club logo

imageio-ext's Introduction

The ImageIO-Ext Project

GeoSolutions Rocks!

The ImageIO-Ext is an Open Source project that provides extensions, fixes and improvements for the standard Oracle Java Image I/O project such as:

  1. Support for the GDAL I/O library
  2. Support for reading/writing JPEG2000 files with Kakadu
  3. Improved support for reading/writing tiff files
  4. A Reader/Writer for JPEG images based on the libjpeg-turbo open source high performance library. More info can be found here
  5. A NITF plugin based on NITRO. More info can be found here
  6. A new PNG Writer with improved performances. More informations can be found here.

The ImageIO library provides support for encoding/decoding raster formats in Java. Some useful documentation on ImageIO can be found here.

See the documentation below for more information on the ImageIO-Ext project.

Releases and Downloads

Current stable release is 1.3.2. Check this page for additional information on how to download artifacts and binaries.

Getting Support

Mailing List

We have created two public mailing lists for ImageIO-Ext one for Developers and one for Users, you can find their homepages here below:

Contributing

We welcome contributions in any form:

  • pull requests for new features
  • pull requests for bug fixes
  • pull requests for documentation
  • funding for any combination of the above

Working with ImageIO-Ext

Here below you can find links with useful information for working with ImageIO-Ext.

Important Notice

In case you want to enable ECW Decode support, it is mandatory you agree with the ECW Eula. Moreover if you want to support ECW Decode in a Server application you need to BUY a license from ERDAS.

License

ImageIO-Ext is released partly under LGPL license partly under the BSD license (namely, derivative work from imageio source code). Refer to the code tree for more information.

Professional Support

ImageIO-EXT has been developed by GeoSolutions as an internal effort to provide extensions, fixes and improvements for the standard Oracle Java Image I/O project

imageio-ext's People

Contributors

aaime avatar barrypitman avatar bradh avatar dependabot[bot] avatar dromagnoli avatar groldan avatar jnewmoyer avatar jodygarnett avatar joshfix avatar kszafran avatar moovida avatar n-lagomarsini avatar nicobrevin avatar pomadchin avatar randomorder avatar tixvieira avatar ugomos avatar weskamm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

imageio-ext's Issues

Geotiff image with JPEG compression don't get converted to RGB correctly

We have images in geotiff format that don't display correctly (tested in GeoServer 2.1RC2 with no native libs added). It looks like it fails to convert colorspace to RGB.

Output from gdalinfo:
Driver: GTiff/GeoTIFF
Files: 10120415361937809856.tif
Size is 5119, 5119
Coordinate System is:
LOCAL_CS["unnamed",
UNIT["unknown",1]]
Origin = (456552.750000000000000,7003661.250000000000000)
Pixel Size = (1.500000000000000,-1.500000000000000)
Metadata:
AREA_OR_POINT=Point
Image Structure Metadata:
SOURCE_COLOR_SPACE=YCbCr
COMPRESSION=JPEG
INTERLEAVE=PIXEL
Corner Coordinates:
Upper Left ( 456552.750, 7003661.250)
Lower Left ( 456552.750, 6995982.750)
Upper Right ( 464231.250, 7003661.250)
Lower Right ( 464231.250, 6995982.750)
Center ( 460392.000, 6999822.000)
Band 1 Block=256x256 Type=Byte, ColorInterp=Red
Band 2 Block=256x256 Type=Byte, ColorInterp=Green
Band 3 Block=256x256 Type=Byte, ColorInterp=Blue

As I don't have good knowledge of TIFFDecompressor and TIFFJPEGDecompressor I'm not sure if a colorConverter should be set or not or what is really the problem.

GIMP opens the image correctly.

Load metadata from ENVI img in Reader class

Metadata from ENVI .hdr files is especially useful for some images, e.g supervised classification results where metadata describes classes found or a multispectral image where metadata contains spectral parameters of the image. HDR files are supported by GDAL (a getMetadata("ENVI") call is said to return the required data), so it should not be hard to add support in imageio readers. For example, there is a BufferedImage.getProperty(String name) that could be used to store this information.

Also, it could be implemented for other filetypes.

Move out netcdfconverters

NetCDFConverters module is no more used.
We can move out from ImageIO-Ext to another project (it contains some interpolation and georectification code which may be useful for some other projects)

JP2KFileWalker is never marked as initialized

Method JP2KFileWalker#init() checks the field JP2KFileWalker#initialized, but it never sets it to true when it completes successfully. Hence the initialization is done for every call to JP2KFileWalker#getJP2KBoxesTree().

Unnecessary BigTIFF seeks

Even when the size of all tiles/strips can be known in advance, the header isn't fully written in advance. The header is written, and as each tile is written, the part of the header corresponding to the tile is replaced, but this requires writing two increasingly-distant parts of the file.

Document common metadata format

We should document the common metadata format since otherwise it si quite
difficult to understand what we can get out of such tree of information.

Metadata support in reader

We should probably take a look to the CLIBJPEGMetadata or the standard JPEGMetadata to setup some code to do JPEG metadata creation.

Fix writing of IndexColorModel images (TIFF)

Out of memory errors have occurred when writing an U_SHORT image having an
IndexColorModel with 65536 elements of the color map.
The tiff plugin should better handle this case allowing to write the image
without problems.

jp2k plugin doesn't work for some jpx/jp2 images

Details from Daniele:

I think I have found the problem. I guess all the JP2K images we have used until now (from several customers needing JP2 related support) don't contain these box.

I think that the constructor which is trying to invoke through reflection has only a byte[] argument whilst the available resolutionBox construtor needs both (byte[] data, int type) to setup a CaptureResolutionBox vs a DisplayResolutionBox.

Improve EXIFUtilities capabilities with getter/parsers

The current code has been quickly developed to support EXIF write operation, insert and update.
There isn't any utility method which allows to get a TAG content from a file, a byte[], a marker,... what else. We need to a few methods to do that.

Also make sure to rename the EXIFUtilities static methods starting with "Is"

Create test program to test GDAL Bindings

We should create a very simple java program to be dropped within the native libraries that can be run in order to check the formats are available.

As an instance the gdalinfo.java turned into a jar would do it.

Improve Tiff metadata

Tiff reader is relatively inefficient since it heavily relies on metadata for doing its work and metadata for bigtiff can be enormous due to the fact that it stores two arrays of long where each element holds the tile offset in the file as well as the tile bytes count.

It would be great to try and:

1 cache these values between multiple successive reads
2 load them as we need them since they are rather big

Improve refineImage on TurboJpegImageWriter

On Turbojpeg writer there is a section of code which perform some checks on sourceImage and requested layout and force a Copy operation to handle cases like this.

imageSize = 20x20
Tile layout size = 128x128.

getData(new Rectangle(0,0,20,20)) will anyway return a 128x128 raster (due to the tile layout) filled with a lot of zeros.

We need to improve the math on this method to deal with special case with negative minX,minY, tileGridOffsets, ...

GdalImageReaderSPI may leave files open on decode

We need to make sure that the canDecode method of the Gdal ImageReader SPI do not
leave files open. File Descriptors are a limited resource, we need to take care of
proper clean up during the canDecode method.

Set priority in Image writer SPI

In turbo jpeg ImageReaderSPI we set the loading priorities so that the turbojpeg one is the first to be chosen.
The same behaviour should be set in the image writer.

Prepare GDAL native libs for different architectures

We should create updated GDAL native libs (built on top of GDAL 1.9.2?) for different systems:

  • Centos 64
  • Centos 32
  • Ubuntu 64
  • Ubuntu 32
  • ....

Also setting up an installer to install them on the system would be helpful.

Add code samples for usage

Need to setup some code samples on how to use the imageio-ext code (we may use parts of code from junit tests and/or see what we have on User doc)

Provides a page containing maven dependencies

A plugin specific page containing needed maven dependencies would be very
useful for users which needs to use only a single plugin.
Knowing all the dependencies needed by that plugin in order to getting it work,
would be helpful.

Improve access of Uncompressed Matlab Data by skipping tags when requested

When parsing the MATLAB5 file via the jmatio library, having the capability to
skip TAGS/Entities (when compression is disabled) would be great in terms of
performance improvements. This will allow if needed, to avoid reading the whole
array/CELLS when initializing the MatfileReader, since you know in advance the
Matlab TAG size.

Deprecated Dependency on ImageOutputStreamAdapter2

Daniele created a specific implementaion of ImageOutputStream to be able to get access to the underling OutputStream. We should streamlines this capability and remove the specific implementation.
Part of this work should ongoing on ImageIO-Ext

Improve GDAL Domain Metadata Management

Currently we manage the domain metadata from GDAL , see here for more info on the metadata concept, as Map of String pairs.

I am hoping we can do slightly better and come up with a better OO design for that, which should also retain information such as the names of the single elements of the domains.

Improve Overviews Management

Actually, when loading data involving overviews, any access to an overview of a
dataset is managed by the underlying GDAL library. Provided a region and a
databuffer/array where that region should be loaded, GDAL will internally find
the proper overview (by taking access to the related raster band) and will do
proper subsampling operations (if needed) in order to fit the specified source
region to the specified destination data buffer.

It would be useful to allow the framework to take direct access to a specific
underlying overview.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.