我用如下的代码生成一个空的400*400的二值bmp图像,但是出现异常:
ImageLoader il=new ImageLoader();
PaletteData palette=new PaletteData(0,0,0);//定义图像的ImageData
ImageData wmBuf1=new ImageData(400,400,1,palette);
il.data=new ImageData[1];
il.data[0]=wmBuf1;
il.save("c:\\demo.bmp",org.eclipse.swt.SWT.IMAGE_BMP);
异常如下:
org.eclipse.swt.SWTException: Invalid image
at org.eclipse.swt.SWT.error(SWT.java:2689)
at org.eclipse.swt.SWT.error(SWT.java:2614)
at org.eclipse.swt.SWT.error(SWT.java:2585)
at org.eclipse.swt.internal.image.WinBMPFileFormat.unloadIntoByteStream(WinBMPFileFormat.java:588)
at org.eclipse.swt.internal.image.FileFormat.unloadIntoStream(FileFormat.java:107)
at org.eclipse.swt.internal.image.FileFormat.save(FileFormat.java:99)
at org.eclipse.swt.graphics.ImageLoader.save(ImageLoader.java:194)
at org.eclipse.swt.graphics.ImageLoader.save(ImageLoader.java:234)
....................................................................
ImageLoader il=new ImageLoader();
PaletteData palette=new PaletteData(0,0,0);//定义图像的ImageData
ImageData wmBuf1=new ImageData(400,400,1,palette);
il.data=new ImageData[1];
il.data[0]=wmBuf1;
il.save("c:\\demo.bmp",org.eclipse.swt.SWT.IMAGE_BMP);
异常如下:
org.eclipse.swt.SWTException: Invalid image
at org.eclipse.swt.SWT.error(SWT.java:2689)
at org.eclipse.swt.SWT.error(SWT.java:2614)
at org.eclipse.swt.SWT.error(SWT.java:2585)
at org.eclipse.swt.internal.image.WinBMPFileFormat.unloadIntoByteStream(WinBMPFileFormat.java:588)
at org.eclipse.swt.internal.image.FileFormat.unloadIntoStream(FileFormat.java:107)
at org.eclipse.swt.internal.image.FileFormat.save(FileFormat.java:99)
at org.eclipse.swt.graphics.ImageLoader.save(ImageLoader.java:194)
at org.eclipse.swt.graphics.ImageLoader.save(ImageLoader.java:234)
....................................................................
然后再用 il.save("c:\\demo.bmp",org.eclipse.swt.SWT.IMAGE_BMP);是没有问题的
PaletteData palette=new PaletteData(0,0,0);
palette.colors=new RGB[]{new RGB(0,0,0),new RGB(255,255,255)};
palette.isDirect=false;
ImageData wmBuf1=new ImageData(width,height,1,palette);