回答
我試過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. 無法讀取和寫入文件C
- 7. 用Java在本地文件系統之間無imageio讀寫圖像
- 8. 使用標準庫寫入文件
- 9. 使用ImageIO讀取JCS_YCCK圖像
- 10. ImageIO異常無法讀取我的輸入文件。對於讀取文件時的緩衝圖像
- 11. 使用Aspose讀取和寫入圖像
- 12. 使用帶有alpha的PNG改進Java ImageIO讀取/寫入
- 13. 無法讀取輸入文件 - 讀取jar文件中包含的圖像-java
- 14. 無法讀取寫入文件的圖像
- 15. 使用BufferedImage讀取和寫入圖像文件
- 16. 無法使用ImageIO從控制器寫入tif文件
- 17. Java - 讀取和寫入文本文件
- 18. 使用Java ImageIO的Tiff壓縮
- 19. 圖像壓縮和ImageIO庫
- 20. TIFF文件結構標準
- 21. Java無法讀取圖像輸入文件。
- 22. Java:文件讀取/寫入
- 23. Java - 文件讀取/寫入
- 24. 使用C標準庫讀取/寫入文件的最佳方式
- 25. ImageJ庫無法打開tiff圖像
- 26. 讀取和寫入文件到java
- 27. 讀取和寫入JSON文件Java
- 28. 錯誤讀取和寫入文件(JAVA)
- 29. 使用IO.StreamReader讀取文件後無法寫入文件
- 30. 在Java中使用ImageIO編寫TIFF的平鋪輸出
您使用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