posts - 1,  comments - 25,  trackbacks - 0

          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;
              }
          }
          posted on 2011-05-27 22:39 Daniel 閱讀(2210) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網站導航:
           
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(3)

          隨筆檔案

          文章分類

          文章檔案

          相冊

          搜索

          •  

          最新評論

          主站蜘蛛池模板: 房山区| 佳木斯市| 库尔勒市| 合江县| 清涧县| 沛县| 崇礼县| 丰城市| 正定县| 南康市| 佛山市| 正蓝旗| 龙井市| 兴宁市| 南澳县| 凤凰县| 平顶山市| 泰和县| 五莲县| 荣成市| 翼城县| 阿克| 阜康市| 简阳市| 湘潭市| 铁力市| 卓资县| 博罗县| 九龙县| 新绛县| 华亭县| 东安县| 买车| 应城市| 井陉县| 横峰县| 东源县| 基隆市| 蒙城县| 砀山县| 宿松县|