How do i read a TIFF image using Java IMAGEIO library??(I am using Eclipse Luna)..And once i download the plugin(JAR files) how to give the Classpath so that it can read my input TIFF image file?
问题:
回答1:
Here a quick example to convert a TIFF image into a PNG image.
// quick conversion example
File inputFile = new File("image.tiff");
File outputFile = new File("output.png");
BufferedImage image = ImageIO.read(inputFile);
ImageIO.write(image, "png", outputFile);
Print a list of all supported formats of the JAI ImageIO library.
import javax.imageio.ImageIO;
...
for (String format : ImageIO.getWriterFormatNames()) {
System.out.println("format = " + format);
}
note For the convertion of image formats which have no built-in support a supporting library must be in the classpath. To find the supported formats check https://docs.oracle.com/javase/tutorial/2d/images/loadimage.html or the snippet above.
e.g. for TIFF you could use the jai_imageio-1.1.jar (or newer).
javac -cp jai_imageio-1.1.jar:. Main.java
java -cp jai_imageio-1.1.jar:. Main
If no TIFF format supporting library is in the classpath the above convertion snippet fails with java.lang.IllegalArgumentException: image == null!
.
Following formats have built-in support (Java 8)
BMP
GIF
JPEG
PNG
WBMP
jai_imageio-1.1.jar
adds support for
JPEG2000
PNM
RAW
TIFF
edit As times goes by and Java 9 is released, a small update, because Java 9 supports TIFF now out of the box.
compile and run with Java 9 without an additional library
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
class TiffToPng {
public static void main(String[] args) throws Exception {
File inputFile = new File("image.tiff");
File outputFile = new File("output.png");
BufferedImage image = ImageIO.read(inputFile);
ImageIO.write(image, "png", outputFile);
}
}
to find supported ImageReader / ImageWriter formats resp. MIME types you could use following snippets
for (String format : ImageIO.getReaderFormatNames()) {
System.out.println("format = " + format);
}
...
for (String format : ImageIO.getReaderMIMETypes()) {
System.out.println("format = " + format);
}
for (String format : ImageIO.getWriterFormatNames()) {
System.out.println("format = " + format);
}
...
for (String format : ImageIO.getWriterMIMETypes()) {
System.out.println("format = " + format);
}
回答2:
If you are getting the error:
java.lang.IllegalArgumentException: image == null!
Just put the below jar :-
- If you are using eclipse, just add it to referenced libraries.
- If you are using just simple java file and running it through console, just paste this jar in the class path.
jai_imageio-1.1.jar | http://www.java2s.com/Code/JarDownload/jai/jai_imageio-1.1.jar.zip
And Import the following :
import com.sun.media.imageio.plugins.tiff.*;