2014-02-25 3 views
9

Ich versuche TIF-Bild in JPG-Bild zu konvertieren. Dafür habe ich den folgenden Code verwenden:TIF in JPG umwandeln, ohne die Bittiefe zu erhöhen

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(); 

Vor der Umstellung meiner Bildgröße wurde ca. 92KB und Bit-Tiefe = 1 Nach der Konvertierung meiner neue jpg Bildgröße ca. 1573KB und Bit-Tiefe = 24

I muss mein neues Image unter 100KB verwalten. Und ich denke, das kann gemacht werden, wenn ich die Bittiefe auf 1 selbst kontrolliere.

Gibt es eine Lösung, die hilfreich ist, um dies durchzuführen?

+0

Siehe libnetpbm, es gibt auch einige Befehlszeilenprogramme (netpbm). Ich nehme an, dass sie es tun können (wenn jfif (.jpeg) 1 bit pixles unterstützt) –

+4

Eine einfache Möglichkeit, Ihre Bildgröße unter 100 KB zu halten, wäre, es in Ruhe zu lassen. Die JPEG-Komprimierung unterstützt keine 1-Bit-Pixeltiefe und ist für diese Art von Bild unbrauchbar. –

+0

Was @squeamishossifrage sagt. :-) TIFF hat mehrere optimierte, verlustfreie Kompressionsalgorithmen für 1 Bit/Pixel Daten. Für JPEG könnten Sie Graustufen verwenden, aber es würde 8 Bits/Pixel ergeben (und verlustreich sein). [JBIG] (http://www.jpeg.org/jbig/) wäre besser geeignet. – haraldK

Antwort

1

IMHO sollten Sie Apache Commons Imaging verwenden, da es sich um eine fortschrittliche und komplette Imaging-Lösung handelt. Ich benutze dies um Tiff Bilder in PDF zu schreiben. Es gibt viele examples. Hoffe, das wird helfen !!