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?
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) –
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. –
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