2014-02-25 28 views
9

我想將TIF圖像轉換爲JPG圖像。對於我使用下面的代碼:將TIF轉換爲JPG而不增加位深

SeekableStream s = new FileSeekableStream(tiffUrl); 
    TIFFDecodeParam param = null; 
    ImageDecoder dec = ImageCodec.createImageDecoder(EXT_TIFFX, s, param); 
    RenderedImage op = dec.decodeAsRenderedImage(0); 
    FileOutputStream fos = new FileOutputStream(jpgUrl); 
    JPEGEncodeParam jpgparam = new JPEGEncodeParam(); 
    jpgparam.setQuality(quality);    
    ImageEncoder en = ImageCodec.createImageEncoder(EXT_JEPGX, fos, jpgparam); 
    en.encode(op); 
    fos.flush(); 
    fos.close(); 
    s.close(); 

轉換我的圖像大小約爲92KB和位深度= 1 轉換後,我的新的JPG圖像大小約爲1573KB和位深度= 24

我之前需要在100KB以下管理我的新映像。我想這可以完成,如果我把位深度控制爲1本身。

是否有解決方案有助於執行此操作?

+0

請參閱libnetpbm,還有一些命令行工具(netpbm)。我假設他們可以做到這一點(如果jfif(.jpeg)支持1位像素) –

+4

保持圖像大小在100 KB以下的簡單方法是讓它保持獨立。 JPEG壓縮不支持1位像素深度,並且對於這種圖像無用。 –

+0

@squeamishossifrage說什麼。 :-) TIFF針對1位/像素數據有幾種優化的無損壓縮算法。對於JPEG,您可以使用灰度,但會導致8位/像素(並且是有損的)。 [JBIG](http://www.jpeg.org/jbig/)會更合適。 – haraldK

回答

1

恕我直言,你應該使用Apache Commons Imaging,因爲它是一個先進和完整的成像解決方案。我使用它來將Tiff圖像寫入PDF。有很多examples。希望這會有所幫助!