Duvida SWT e AWT

Galera estou criando uma imagem no BufferedImage do AWT, imprimindo nela uns textos e salvando, no formato BMP Binary, até ai tudo bem funcionando perfeitamente, segue o codigo abaixo.

BufferedImage image= new BufferedImage(x, y, BufferedImage.TYPE_BYTE_BINARY);
            Graphics g = image.getGraphics();
            g.setColor(Color.white);
            g.fillRect(0, 0, x, y);
            g.setColor(Color.black);
            g.drawString("TESTE DE IMPRESSAO", 20,20);
            ImageIO.write(image, "bmp", new File(file2));

Mas este codigo no meu caso não vai funcionar pois estou usando a J9 da IBM e o BufferedImage que ele utiliza é diferente, o construtor é diferente e nao consigo utiliza-lo, uma ideia seria trabalhar apenas com Image, ou Canvas, mas nem sei como fazer isso.

Outra idéia que tive foi utilizar o Image do SWT, pois a J9 suporta SWT nativamente, estou utilizando o seguinte codigo!


Image imagem = new Image(display, x, y);
            GC g = new GC(imagem);
            g.setBackground(display.getSystemColor(SWT.COLOR_WHITE));
            g.setForeground(display.getSystemColor(SWT.COLOR_BLACK));
            g.setFont(new Font(Display.getDefault(), "DIALOG", font, SWT.NORMAL));
            g.drawString("teste de impressap", 30, 30);
            g.dispose();
            ImageData data=imagem.getImageData();
            ImageLoader loader = new ImageLoader();
            loader.data = new ImageData[]{imagem.getImageData()};
            loader.save(file, SWT.BITMAP);
            imagem.dispose();
            display.dispose();

Este codigo funcionou esta rodando na J9, mas agora estou com o seguinte problema, a Imagem gerada no SWT é uma imagem BMP de 24bits, isso da um total de 2mb de imagem, e não achei forma de salva-la em byte Binary como o codigo acima usando BufferImage.
Estou pedindo a ajuda de vcs para me ajudar de alguma forma salvar esta imagem em bmp binario, pois ela é preto e branco apenas, igual o codigo acima, aceito outras ideias tb.

Obrigado!

Por que não experimenta gravar a imagem em formato PNG? O arquivo final deve ficar menor, e preservará toda a qualidade de imagem original.

No me caso não adianta, pois é para uma impressora termica, e ela aceita apenas BMP binario, mas consegui faze-lo segue abaixo o codigo.

            Display display = new Display();
            int x = 384, y = 1800, font = 14;
            org.eclipse.swt.graphics.Color white = display.getSystemColor(SWT.COLOR_WHITE);
            org.eclipse.swt.graphics.Color black = display.getSystemColor(SWT.COLOR_BLACK);
            // Create a source ImageData of depth 1 (monochrome)
            PaletteData palette = new PaletteData(new RGB[]{white.getRGB(), black.getRGB(),});
            ImageData sourceData = new ImageData(x, y, 1, palette);
            Image im = new Image(display, sourceData);
            GC gc = new GC(im);
            Font normal = new Font(Display.getDefault(), "DIALOG", font, SWT.NORMAL);
            Font bold = new Font(Display.getDefault(), "DIALOG", font, SWT.BOLD);
            gc.setFont(normal);
            gc.drawString(lin.elementAt(p).toString(), coluna, linha * spaceline);
            gc.dispose();
            sourceData = im.getImageData();
            ImageLoader load = new ImageLoader();
            load.data = new ImageData[]{sourceData};
            load.save(file, SWT.IMAGE_BMP);
            im.dispose();