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 閱讀(2216) 評論(0)  編輯  收藏

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


          網站導航:
           
          <2025年8月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          常用鏈接

          留言簿(3)

          隨筆檔案

          文章分類

          文章檔案

          相冊

          搜索

          •  

          最新評論

          主站蜘蛛池模板: 新沂市| 平乐县| 盐城市| 丁青县| 聂荣县| 新田县| 巍山| 噶尔县| 朝阳市| 璧山县| 泉州市| 弥勒县| 图片| 静乐县| 闽侯县| 德保县| 安宁市| 玛纳斯县| 金乡县| 田东县| 邓州市| 康定县| 县级市| 南漳县| 张家港市| 汉中市| 丹棱县| 岳阳县| 仙游县| 琼中| 台湾省| 合江县| 望奎县| 福海县| 荣昌县| 望都县| 宁远县| 青海省| 北票市| 永兴县| 师宗县|