我用如下的代码生成一个空的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)
....................................................................

解决方案 »

  1.   

    org.eclipse.swt.SWT.IMAGE_BMP的问题
      

  2.   

    能不能说详细一点呢?我用ImageLoader il=new ImageLoader("c:\\demo.bmp");
    然后再用 il.save("c:\\demo.bmp",org.eclipse.swt.SWT.IMAGE_BMP);是没有问题的

      

  3.   

    用如下语句:
    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);