`
feohoo
  • 浏览: 112646 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Three ways to convert TIF to JPG with JAI

 
阅读更多

The project requirements: Should convert TIF into JPG with JAVA, But seems only IMAGEIO can't support TIF.
So should use JAI, Java Advantage Image jars.

JAI api download page: http://download.java.net/media/jai/builds/release/1_1_3/

J
AI API document page: http://download.oracle.com/docs/cd/E17802_01/products/products/java-media/jai/forDevelopers/jai-apidocs/index.html



C
ode as below:

package com.ebay.test1;
import java.awt.image.RenderedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.imageio.ImageIO;
import javax.media.jai.JAI;
import javax.media.jai.RenderedOp;
import org.junit.Test;
import com.sun.media.jai.codec.ImageCodec;
import com.sun.media.jai.codec.ImageDecoder;
import com.sun.media.jai.codec.ImageEncoder;
import com.sun.media.jai.codec.JPEGEncodeParam;
public class Snippet {
@Test
public void testTif2JPG2(){
try{
String filename =  "F:\\Downloads\\CCITT_2.TIF";
String jpegFileName = "F:\\Downloads\\CCITT_2.JPG";
RenderedOp source = JAI.create("fileload", filename);
FileOutputStream stream = null;
stream = new FileOutputStream(jpegFileName );
com.sun.media.jai.codec.JPEGEncodeParam JPEGparam = new
com.sun.media.jai.codec.JPEGEncodeParam();
ImageEncoder encoder =
ImageCodec.createImageEncoder("jpeg",stream,JPEGparam);
encoder.encode(source);
}catch(Exception e){
e.printStackTrace();
}
}
@Test
public void testTif2JPG3(){
try{
String filename =  "F:\\Downloads\\CCITT_2.TIF";
String jpegFileName = "F:\\Downloads\\CCITT_2.JPG";
FileOutputStream stream = null;
stream = new FileOutputStream(jpegFileName );
byte[] b = getBytesFromFile(new File(filename));
InputStream bais = new ByteArrayInputStream(b);
ImageDecoder decoder = ImageCodec.createImageDecoder("tiff", bais, null);
            RenderedImage ri = decoder.decodeAsRenderedImage();
// RenderedOp source = JAI.create("TIFF", bais);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
JPEGEncodeParam JPEGparam = new JPEGEncodeParam();
JPEGparam.setQuality(Float.MIN_VALUE);
ImageEncoder encoder = ImageCodec.createImageEncoder("jpeg",baos,JPEGparam);
encoder.encode(ri);
byte[] byteArray = baos.toByteArray();
FileOutputStream fos = new FileOutputStream(new File(jpegFileName));
fos.write(byteArray);
}catch(Exception e){
e.printStackTrace();
}
}
 @Test
public void testTif2JPG4(){
try{
String filename =  "F:\\Downloads\\CCITT_2.TIF";
String jpegFileName = "F:\\Downloads\\CCITT_2.JPG";
FileOutputStream stream = null;
stream = new FileOutputStream(jpegFileName );
byte[] b = getBytesFromFile(new File(filename));
InputStream bais = new ByteArrayInputStream(b);
            ImageDecoder decoder = ImageCodec.createImageDecoder("tiff", bais, null);
            RenderedImage ri = decoder.decodeAsRenderedImage();
            ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
            ImageIO.write(ri, "JPEG", outputStream);
            stream.write(outputStream.toByteArray());
}catch(Exception e){
e.printStackTrace();
}
}
// Returns the contents of the file in a byte array.
    public static byte[] getBytesFromFile(File file) throws IOException {
        InputStream is = new FileInputStream(file);
    
        // Get the size of the file
        long length = file.length();
    
        // You cannot create an array using a long type.
        // It needs to be an int type.
        // Before converting to an int type, check
        // to ensure that file is not larger than Integer.MAX_VALUE.
        if (length > Integer.MAX_VALUE) {
        throw new IllegalArgumentException("File is too big, can't support.");
        }
    
        // Create the byte array to hold the data
        byte[] bytes = new byte[(int)length];
    
        // Read in the bytes
        int offset = 0;
        int numRead = 0;
        while (offset < bytes.length
               && (numRead=is.read(bytes, offset, bytes.length-offset)) >= 0) {
            offset += numRead;
        }
    
        // Ensure all the bytes have been read in
        if (offset < bytes.length) {
            throw new IOException("Could not completely read file "+file.getName());
        }
    
        // Close the input stream and return bytes
        is.close();
        return bytes;
    }
}
分享到:
评论

相关推荐

    java程序将tif文件转为jpg所需jar包

    String jpgFilePath = "path_to_output_jpg_file.jpg"; // 读取TIFF图像 RenderedOp tiffImage = JAI.create("fileload", tiffFilePath); // 将TIFF图像转换为JPEG RenderedImage jpegImage = tiffImage....

    tif转jpg。正版jai-core,jai-codec。附代码以及tif图片供测试。

    FileInputStream fis = new FileInputStream("input.tif"); TIFFImageDecoder decoder = TIFFImageDecoder.create(fis, null); RenderedOp tiffImage = decoder.decodeAsRenderedImage(); // 创建JPEG编码参数 ...

    多页tif生成多个单页jpg图片

    5. **创建工具类和测试类**:为了方便复用和测试,我们可以创建一个名为`TifToJpg`的工具类,其中包含一个静态方法来执行上述转换过程。同时,创建一个`Demo`测试类,调用工具类的方法进行实际转换。 ```java ...

    tif文件切割成多个jpg所需的jai-imageio

    java操作tif文件切割jpg格式所需要用到的jar。该压缩包内含jai-imageio-core-1.4.0.jar。 tif源自kfb转换而来。 如你的代码业务也同样是kfb转jpg,请移步:...

    JAI - 将图片转为TIF格式的依赖包

    在本场景中,"JAI - 将图片转为TIF格式的依赖包"指的是利用JAI来将常见的图片格式如JPEG (JPG)、Portable Network Graphics (PNG) 和Bitmap (BMP) 转换成Tagged Image File Format (TIFF)。TIFF是一种灵活的位图图像...

    convert bmp to jpg and jpg to bmp

    在IT领域,图像处理是一项常见的任务,涉及到各种格式之间的转换,比如从BMP(位图)格式转换为JPEG( JPG)格式,以及反向转换。本文将深入探讨这两种图像格式的特点,转换过程以及如何实现这一过程。 BMP(Bitmap...

    tif文件转jpg所需jar

    java操作tif文件转换jpg格式所需要用到的jar。该压缩包内含jai_codec-1.1.3.jar和jai_core-1.1.3.jar。 tif源自kfb转换而来。 如你的代码业务也同样是kfb转jpg,请移步:...

    jpg转tif的所有jar包.7z

    "jpg转tif的所有jar包.7z" 提供了转换JPEG(jpg)格式图像到TIFF(tif)格式所需的Java库和代码示例。以下是关于这个主题的详细知识: 1. **JPEG与TIFF格式**: - **JPEG(Joint Photographic Experts Group)**:...

    jai_codec.jar 和 jai_core.jar 转换tif图片为jpeg

    javax.media-jai_codec-1.1.3.jar 和 javax.media-jai_core-1.1.3.jar 将tif图片转换为jpeg图片。修复 java.lang.NoClassDefFoundError: com/sun/image/codec/jpeg/JPEGCodec ,由于这个类已经过时,在新版的OpenJDK...

    Tif2Jpg.zip

    本教程将重点讲解如何使用Java编程语言将tif(Tagged Image File Format)格式的图片转换为jpg(Joint Photographic Experts Group)格式。TIF是一种广泛用于专业图像领域的高压缩比格式,而JPEG则更适合网络分享和...

    java tif转换包等jar jai-codec-1.1.3 jai_core-1.1.3

    java tif转换包等jar jai-codec-1.1.3 jai_core-1.1.3 java tif转换包等jar ...jai_core-1.1.3java tif转换包等jar jai-codec-1.1.3 jai_core-1.1.3java tif转换包等jar jai-codec-1.1.3 jai_core-1.1.3 很难下

    jai-codec.jar

    RenderedOp image = JAI.create("fileload", new String[]{"/path/to/input.jpg"}); BufferedImage bufferedImage = image.getAsBufferedImage(); // 写入图像 JAI.create("filestore", bufferedImage, "/path/...

    tiff 转换 jpg java 亲测过了

    在这个场景下,我们主要需要用到两个JAI的库:`jai_codec-1.1.3.jar`和`jai_core-1.1.3.jar`。这些库包含了处理TIFF和JPG所需的方法和类。 首先,确保在项目中正确导入这两个库。在Maven项目中,可以在pom.xml文件...

    关于JAI的两个JAR文件jai_codec.jar和jai_core.jar的最新版本

    在实际应用中,如果你需要进行TIF图片转换或其他复杂的图像处理任务,这些JAI相关的库会非常有用。通过导入这些JAR文件到你的项目中,你可以利用JAI的强大功能来处理高分辨率的图像,或者执行需要高性能计算的图像...

    jai_codec.jar&jai;_core-1.1.3.jar

    描述中提到的“将tif转为jpg必须的包”,指的是在Java应用程序中,如果需要将TIFF图像转换为更常见的JPEG格式,就需要这两个JAR文件。JPEG格式通常用于网络传输和网页显示,因为其文件大小比TIFF小得多,但可能会有...

    jai_codec-1.1.3.jar 和 jai_core.jar 核心包

    在给定的压缩包中,有两个核心的JAR文件:`jai_codec-1.1.3.jar` 和 `jai_core.jar`,它们对于处理特定格式的图像,特别是 TIFF 图片到 JPG 的转换至关重要。 1. **jai_codec-1.1.3.jar**: 这个JAR文件包含了Java...

    jai包 包括jai_codec、jai_core、mlibwrapper_jai

    标题提到的"jai包 包括jai_codec、jai_core、mlibwrapper_jai"分别代表JAI的不同组件: 1. **jai_codec.jar**:这个包提供了图像编码和解码的能力。它包含了对多种图像格式(如JPEG、PNG、BMP、TIFF等)的支持,...

    tif转jpg以及pdf.rar

    tif、tiff转jpg,转pdf。无旧压缩格式JPEG解析问题Decoding of old style JPEG-in-TIFF data is not supported。内含所需itextpdf-5.5.5.jar 以及jai-imageio-core-1.4.0.jar

    jai_codec-1.1.3_jai_core-1.1.3.zip

    标题中的"jai_codec-1.1.3_jai_core-1.1.3.zip"是一个包含JAI核心组件(jai_core)和JAI编解码器组件(jai_codec)的压缩包,版本号为1.1.3。这两个组件是Java开发者用于高级图像处理和媒体处理的关键工具。 **JAI ...

    jai-core-1.1.3.jar jai-imageio.jar jai-codec-1.1.3.jar

    Java Advanced Imaging (JAI) 是一个用于处理图像的开源库,由Sun Microsystems开发,现在由Oracle维护。这个库提供了一系列高级图像操作,如旋转、缩放、色彩转换和编码解码等,支持多种图像格式。在给定的文件中,...

Global site tag (gtag.js) - Google Analytics