SWT图像到/从字符串

我试图将SWT图像转换为字符串,反之亦然:

字符串:

Display display = new Display(); final Image image = new Image(display, "c:\test.png"); // Looks good showImage(image ,600,400); ImageData imageData = testImage.getImageData(); byte[] data = imageData.data; String imageString = new String(Base64.encode(data)); 

回到图片:

 byte[] decode = Base64.decode(imageString.getBytes()); decode.toString(); Image c_img = new Image(Display.getCurrent(), stringToInputStream(decode.toString())); // Throws exception. showImage(c_image ,600,400); 

哪里:

  private static void showImage(final Image image, int w, int h) { Display display = new Display(); Shell shell = new Shell(display, SWT.SHELL_TRIM | SWT.DOUBLE_BUFFERED); shell.setLayout(new FillLayout()); shell.addListener(SWT.Paint, new Listener() { public void handleEvent(Event e) { GC gc = e.gc; int x = 10, y = 10; gc.drawImage(image, x, y); gc.dispose(); } }); shell.setSize(w, h); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } if (image != null && !image.isDisposed()) { image.dispose(); } display.dispose(); } private static InputStream stringToInputStream(String input) { InputStream is = null; try { is = new ByteArrayInputStream(input.getBytes("UTF-8")); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return is; } 

从String显示图像时的错误是:

 org.eclipse.swt.SWTException: Unsupported or unrecognized format at org.eclipse.swt.SWT.error(SWT.java:4083) at org.eclipse.swt.SWT.error(SWT.java:3998) at org.eclipse.swt.SWT.error(SWT.java:3969) at org.eclipse.swt.internal.image.FileFormat.load(FileFormat.java:82) at org.eclipse.swt.graphics.ImageLoader.load(ImageLoader.java:130) at org.eclipse.swt.graphics.ImageDataLoader.load(ImageDataLoader.java:22) at org.eclipse.swt.graphics.ImageData.(ImageData.java:331) at org.eclipse.swt.graphics.Image.(Image.java:545) 

我是第一个这样做的吗? 或者是否有一些例子说明如何正确地完成这项工作?

当然这是错的:

 stringToInputStream(decode.toString()) 

如果在字节数组上调用toString() ,则不会将字节转换为String ; 你得到一个看起来像的String

 byte[@6536753 

您需要从“解码”本身构造ByteArrayInputStream

你为什么要用String操作? 字节[]对你不好吗? 您在转换它的操作中添加了无用的步骤。

如果有人需要它,我可以通过以下链接实现它: http : //www.programcreek.com/2009/02/java-convert-image-to-byte-array-convert-byte-array-to-image /

经过大量的尝试,使用建议的问题方法,或者使用ImageLoader,我总是得到:

org.eclipse.swt.SWTException:不支持或无法识别的格式

但是通过链接的方法(使用Base64.decode和encode),它可以工作。