Home » Eclipse Projects » Standard Widget Toolkit (SWT) » Image BMP Binary with SWT(Save file BMP type binary image.)
Image BMP Binary with SWT [message #498455] |
Tue, 17 November 2009 03:24 |
Junior Messages: 1 Registered: November 2009 |
Junior Member |
|
|
Hello, I think a picture and saved in a BMP file with 24bit color, but it got the file size of 2Mb, I would save this file in binary format, because the color is only black and white.
This is possible?
I managed to do using only AWT, but as I use the IBM J9 must do the same but in SWT.
Could someone help me?
Thank you!
My Codes.
AWT
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));
SWT
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.IMAGE_BMP);
imagem.dispose();
display.dispose();
|
|
|
Re: Image BMP Binary with SWT [message #498850 is a reply to message #498455] |
Wed, 18 November 2009 19:27 |
Grant Gayed Messages: 2150 Registered: July 2009 |
Senior Member |
|
|
Hi,
Here's an example snippet from Silenio that does what you want (it assumes
that the original image is black and white):
public static void main(String[] args) {
String IMAGE_FILENAME = "savedImage.bmp";
Display display = new Display();
Shell shell = new Shell(display);
final Image originalImage = new Image(display, 100, 100);
GC gc = new GC(originalImage);
gc.setBackground(display.getSystemColor(SWT.COLOR_BLACK));
gc.fillOval(0, 0, 100, 100);
gc.dispose();
ImageData originalImageData = originalImage.getImageData();
ImageData newImageData = new ImageData (originalImageData.width,
originalImageData.height, 1, new PaletteData (new RGB[] {new RGB(0, 0, 0),
new RGB(255, 255, 255)}));
for (int y = 0; y < originalImageData.height; y++) {
for (int x = 0; x < originalImageData.width; x++) {
RGB rgb =
originalImageData.palette.getRGB(originalImageData.getPixel( x, y));
newImageData.setPixel(x, y, newImageData.palette.getPixel(rgb));
}
}
final Image newImage = new Image(display, newImageData);
ImageLoader loader = new ImageLoader();
loader.data = new ImageData[] {newImageData};
loader.save(IMAGE_FILENAME, SWT.IMAGE_BMP_RLE);
final Image loadedImage = new Image(display, IMAGE_FILENAME);
shell.addListener(SWT.Paint, new Listener() {
public void handleEvent(Event event) {
event.gc.drawImage(originalImage, 10, 10);
event.gc.drawImage(newImage, 10, 120);
event.gc.drawImage(loadedImage, 10, 230);
}
});
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) display.sleep();
}
loadedImage.dispose();
newImage.dispose();
originalImage.dispose();
display.dispose();
}
Grant
"Junior" <shakapp@hotmail.com> wrote in message
news:hdt528$p08$1@build.eclipse.org...
> Hello, I think a picture and saved in a BMP file with 24bit color, but it
got the file size of 2Mb, I would save this file in binary format, because
the color is only black and white.
> This is possible?
>
> I managed to do using only AWT, but as I use the IBM J9 must do the same
but in SWT.
>
> Could someone help me?
>
> Thank you!
>
> My Codes.
>
> AWT
>
>
> 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));
>
> SWT
>
> 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.IMAGE_BMP);
> imagem.dispose();
> display.dispose();
>
>
|
|
|
Goto Forum:
Current Time: Tue Apr 23 17:45:51 GMT 2024
Powered by FUDForum. Page generated in 0.02767 seconds
|