回答
我试过JAI,它不适合我。
你卡在哪里?以下是否适合你?
import java.io.File;
import java.io.FileOutputStream;
import java.awt.image.RenderedImage;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import javax.media.jai.NullOpImage;
import javax.media.jai.OpImage;
import com.sun.media.jai.codec.SeekableStream;
import com.sun.media.jai.codec.FileSeekableStream;
import com.sun.media.jai.codec.TIFFDecodeParam;
import com.sun.media.jai.codec.ImageDecoder;
import com.sun.media.jai.codec.ImageCodec;
public class Main {
public static void main(String args[]) {
File file = new File("input.tif");
try {
SeekableStream s = new FileSeekableStream(file);
TIFFDecodeParam param = null;
ImageDecoder dec = ImageCodec.createImageDecoder("tiff", s, param);
RenderedImage op = new NullOpImage(dec.decodeAsRenderedImage(0),
null,
OpImage.OP_IO_BOUND,
null);
FileOutputStream fos = new FileOutputStream("output.jpg");
JPEGImageEncoder jpeg = JPEGCodec.createJPEGEncoder(fos);
jpeg.encode(op.getData());
fos.close();
}
catch (java.io.IOException ioe) {
System.out.println(ioe);
}
}
}
一旦你在classpath中有jai_imageio.jar,你应该简单的正常使用ImageIO API – MadProgrammer 2012-07-18 00:08:50
添加Maven的依赖性:
<dependency>
<groupId>org.geotoolkit</groupId>
<artifactId>geotk-coverageio</artifactId>
<version>3.17</version>
</dependency>
代码示例:
import org.geotoolkit.image.io.plugin.RawTiffImageReader;
IIORegistry registry = IIORegistry.getDefaultInstance();
registry.registerServiceProvider(new RawTiffImageReader.Spi());
String[] a = ImageIO.getReaderFileSuffixes();
for (int i=0; i<a.length; i++) {
System.out.println(a[i]);
}
BufferedImage image = ImageIO.read(new File("C:\\mypic.tiff"));
ImageIO.write(image, "jpg",new File("C:\\out.jpg"));
ImageIO.write(image, "gif",new File("C:\\out.gif"));
ImageIO.write(image, "png",new File("C:\\out.png"));
ImageIO.write(image, "tif",new File("C:\\out.tiff"));
恐怕依赖不再起作用。什么工作对我来说:
如果你不喜欢或者不能使用JAI为我写了一个TIFF插件的ImageReader任何理由ImageIO,请登录GitHub。它是纯Java的,不需要任何本机安装,并且带有非常友好的开源许可证(BSD)。
它支持任何基线TIFF选项以及大量的标准扩展。从版本3.1起,TIFF插件也具有写入支持。
在你的类路径正确的JAR文件,使用可以简单到:
BufferedImage image = ImageIO.read(inputTIFF);
// ...modify image (compose, resize, sharpen, etc)...
ImageIO.write(image, "TIFF", outputTIFF);
你好haraldK你怎么用这个?我根本不喜欢JAI,我找不到任何关于如何将tiff文件转换为jpg的例子。我试过了:BufferedImage image = ImageIO.read(new File(inFile)); !ImageIO。写(图像,“jpg”,新的文件(outFile))) – delkant 2014-04-07 23:20:02
@delkant这可能应该工作,如果你有一切正确安装。请参阅[安装说明](https://github.com/haraldk/TwelveMonkeys#installing)以获取更多详细信息,或者如果无法使用它,请提交问题(包含完整详细信息)。 – haraldK 2014-04-08 10:16:23
根据JEP 262: TIFF Image I/O的TIFF插件,曾经是JAI的一部分将可作为Java SE的一部分,从Java 9.
这意味着,使用Java 9日起,下列代码将只是工作,没有任何额外的进口或依赖性:
BufferedImage image = ImageIO.read(inputTIFF);
// ...modify image (compose, resize, sharpen, etc)...
ImageIO.write(image, "TIFF", outputTIFF);
我还没有能够验证此插件中对非基线TIFF风格的支持,但我认为至少应该完全支持基线TIFF。
- 1. Java ImageIO:无法读取输入文件
- 2. 无法读取TIFF图像文件
- 3. OpenIMAJ库无法读取tiff文件?
- 4. ImageIO无法将缓冲图像写入文件
- 5. 无法获取文件使用读取/ fgets /写入标准输出在C
- 6. 使用ImageIO读取JCS_YCCK图像
- 7. 使用标准库写入文件
- 8. 无法读取输入文件 - 读取jar文件中包含的图像-java
- 9. 无法读取写入文件的图像
- 10. 使用Java ImageIO的Tiff压缩
- 11. Java无法读取图像输入文件。
- 12. Java:文件读取/写入
- 13. Java - 文件读取/写入
- 14. 使用java.nio读取其他文件后,无法写入文件
- 15. 无法读取JTextArea并写入文件
- 16. 使用mex读取和写入文件
- 17. NetLogo - 读取和写入Java API使用的文本文件
- 18. 无法使用标准输入读取输入
- 19. 写入和读取文件
- 20. Java/ImageIO在不读取整个文件的情况下获取图像尺寸?
- 21. qnx6 fs无法读取/写入,标准高清
- 22. 无法使用ImageIO.read(文件文件)读取JPEG图像
- 23. Image.IO无法读取输入文件 - Java
- 24. FileReader readAsDataURL无法读取图像文件
- 25. 读取和写入文件
- 26. 读取和写入Java密钥库
- 27. 写的图像文件通过使用ImageIO的
- 28. 无法读取使用Java中的SXSSFWorkbook编写的文件
- 29. 读取和写入使用Java
- 30. TIFF图像,TIFF库VISUAL C++
您使用Java SE吗? [Java Advanced Imaging API](http://java.sun.com/products/java-media/jai/iio.html)支持TIFF。详情[这里](https://jai-imageio.dev.java.net/)。 – MPG 2009-12-23 19:14:29
您需要[JAI包](https://jai.dev.java.net/#Downloads)来处理TIFF文件。一个显示TIFF文件的简单例子:[显示一个TIF](http://www.rgagnon.com/javadetails/java-0605.html) – RealHowTo 2009-12-23 21:26:37