如何使用Java IMAGEIO库读取TIFF图像?(我正在使用Eclipse Luna)..而且一旦我下载了插件(JAR文件),如何给出Classpath以便它可以读取我的输入TIFF图像文件?
答案 0 :(得分:2)
这是一个将TIFF图像转换为PNG图像的快速示例。
// 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);
打印JAI ImageIO库所有支持格式的列表。
import javax.imageio.ImageIO;
...
for (String format : ImageIO.getWriterFormatNames()) {
System.out.println("format = " + format);
}
note 对于没有内置支持的图像格式的转换,支持库必须位于类路径中。要查找支持的格式,请选中https://docs.oracle.com/javase/tutorial/2d/images/loadimage.html或上面的代码段。
e.g。对于TIFF,您可以使用jai_imageio-1.1.jar(或newer)。
javac -cp jai_imageio-1.1.jar:. Main.java
java -cp jai_imageio-1.1.jar:. Main
如果类路径中没有TIFF格式支持库,则上述转换代码段将失败并显示java.lang.IllegalArgumentException: image == null!
。
以下格式具有内置支持(Java 8)
BMP
GIF
JPEG
PNG
WBMP
jai_imageio-1.1.jar
增加了对
JPEG2000
PNM
RAW
TIFF
编辑随着时间的推移和Java 9的发布,这是一个小小的更新,因为Java 9现在支持TIFF。
使用Java 9编译并运行,无需额外的库
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);
}
}
找到支持的ImageReader / ImageWriter格式。您可以在片段之后使用的MIME类型
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);
}
答案 1 :(得分:2)
如果出现错误:
java.lang.IllegalArgumentException: image == null!
只需将下面的罐子放进去:-
jai_imageio-1.1.jar | http://www.java2s.com/Code/JarDownload/jai/jai_imageio-1.1.jar.zip
并导入以下内容:
import com.sun.media.imageio.plugins.tiff.*;