我认为JAI不支持直接读取G3 / T.4原始传真数据.但是,这里的示例代码可以修改和扩展以满足您的需求,实现评论中概述的想法(最初发布为Gist).
它不以任何方式解码G3 / T.4数据,它只是将原始传真数据包装在最小的TIFF容器中.这允许稍后将数据读取为正常TIFF.它使用(我自己的)TwelveMonkeys ImageIO库来实现.
如果您不知道传真文件的宽度/高度,您可以通过使用CCITTFaxDecoderStream,尝试标准中定义的不同宽度(列)来实现算法来查找它们,并查看有多少整行你可以阅读.如果你有正确的数字,你应该完全消耗流.
import com.twelvemonkeys.imageio.metadata.AbstractEntry;
import com.twelvemonkeys.imageio.metadata.Entry;
import com.twelvemonkeys.imageio.metadata.exif.EXIFWriter;
import com.twelvemonkeys.imageio.metadata.exif.Rational;
import com.twelvemonkeys.imageio.metadata.exif.TIFF;
import javax.imageio.ImageIO;
import javax.imageio.stream.ImageOutputStream;
import java.io.*;
import java.util.ArrayList;
public class G3Test {
public static void main(String[] args) throws IOException {
File input = new File(args[0]);
File output =