2011-07-29 73 views
0

ロスレスjpeg操作、すなわちjpegtranで作物を使用して、大きなJPEG画像からJPEG圧縮タイルを含むタイルピラミッドTIFFファイルを作成する必要があります。そのような操作を実行するためのツールやJavaコードがありますか?ロスレスの方法でJPEG画像からピラミッドタイルTIFFを作成する方法

現在、私はタイル張りのピラミッドTIFFを作成するために、私のJavaコードを使用していますが、それは非可逆な方法でそれをやって:

public static void writeTiff(RenderedOp src, File dstFile, float jpegQuality, int tileSize, int pyramid, String interpolation) throws IOException { 
    dstFile.getParentFile().mkdirs(); 
    TIFFImageWriterSpi imageWriterSpi = new TIFFImageWriterSpi(); 
    TIFFImageWriter imageWriter = (TIFFImageWriter)imageWriterSpi.createWriterInstance(); 
    ImageOutputStream out = new FileImageOutputStream(dstFile); 
    try { 
     imageWriter.setOutput(out); 
     imageWriter.prepareWriteSequence(null); 
     BufferedImage img = null; 
     for(int i=0; i<pyramid; i++) { 
      img = img==null ? src.getAsBufferedImage() : JAIUtils.scale(img, 0.5F, interpolation).getAsBufferedImage(); 
      TIFFImageWriteParam imageWriteParam = (TIFFImageWriteParam)imageWriter.getDefaultWriteParam(); 
      if (tileSize>0 && (img.getWidth()>tileSize || img.getHeight()>tileSize)) { 
       imageWriteParam.setTilingMode(ImageWriteParam.MODE_EXPLICIT); 
       imageWriteParam.setTiling(tileSize, tileSize, 0, 0); 
      } 
      if (jpegQuality > 0) { 
       imageWriteParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); 
       imageWriteParam.setCompressionType("JPEG"); 
       imageWriteParam.setCompressionQuality(jpegQuality); 
      } 
      imageWriter.writeToSequence(new IIOImage(img, null, null), imageWriteParam); 
     } 
     imageWriter.endWriteSequence(); 
    } finally { 
     out.close(); 
    } 
} 

答えて

0

Ossimは、コマンドラインからうまく動作しますが、私はそれがあまりにも、JNI bindingを持って見ます。

+0

チップをありがとう、私はそれをチェックアウトします – wikisky

関連する問題