2016-05-19 4 views
0

Ich habe einen BMP in einem Bytearray. Ich möchte den BMP in einem Eclipse Plugin mit SWT anzeigen.Laden eines BMP in eine Eclipse-Pluginperspektive mit SWT

Wenn ich das BMP mit Swing angezeigt werden soll - es kann getan werden, wie folgt:

BufferedImage bufferedImage = null; 
    try { 
     bufferedImage = ImageIO.read(new ByteArrayInputStream(getLocalByteArray())); 
    } catch (IOException ex) { 

    } 

    JLabel jLabel = new JLabel(new ImageIcon(bufferedImage)); 

    JPanel jPanel = new JPanel(); 
    jPanel.add(jLabel); 
    this.add(jPanel); 

Update: Die BMP wird als Byte-Array dargestellt werden. Dies ist Voraussetzung dafür.

Wie mache ich das in einem Eclipse-Plugin mit SWT? Hinweis Ich verwende eine Perspektive.

Antwort

0

OK - ich habe es herausgefunden. Da der Code kurz ist, habe ich den Kontext enthalten:

public void createPartControl(Composite parent) { 
    try { 
     BufferedInputStream inputStream = new BufferedInputStream(new ByteArrayInputStream(getLocalByteArray())); 
     ImageData imageData = new ImageData(inputStream); 
     Image image = ImageDescriptor.createFromImageData(imageData).createImage(); 


     // Create the canvas for drawing 
     Canvas canvas = new Canvas(parent, SWT.NONE); 
     canvas.addPaintListener(new PaintListener() { 
     public void paintControl(PaintEvent e) { 
     GC gc = e.gc; 
     gc.drawImage(image,10,10); 
     } 
     }); 
2

Ein SWT Image kann direkt aus einem Eingabestream erstellt werden. Verschiedene Datenformate werden unterstützt, einschließlich Windows-BMPs.

Zum Beispiel:

Image image = new Image(display, new ByteArrayInputStream(...)); 

Das resultierende Bild kann dann auf einem Label oder an anderer Stelle verwendet, eingestellt wird.

+0

Entschuldigung. Ich habe meine Frage aktualisiert. Das BMP, das als Byte-Array dargestellt wird, ist eine Voraussetzung. Vielen Dank. –

+1

Bitte lesen Sie die Antwort erneut. Es erstellt ein Bild aus einem (ByteArray) InputStream. Ersetzen Sie die ... mit Ihrem Methodenaufruf und Sie sind fertig. Und vergessen Sie nicht, das Bild zu entsorgen. –

1

Sie können einfach die Datei im Image Konstruktor angeben und dann auf Label setzen.

public static void main(String[] args) { 
    Display display = new Display(); 
    Shell shell = new Shell(display); 
    shell.setLayout(new FillLayout()); 

    Label label = new Label(shell, SWT.NONE); 
    Image image = new Image(display, "image.bmp"); 
    label.setImage(image); 

    shell.pack(); 
    shell.open(); 

    while (!shell.isDisposed()) { 
     if (!display.readAndDispatch()) 
     { 
      display.sleep(); 
     } 
    } 
    display.dispose(); 

    image.dispose(); 
} 

Denken Sie daran, dass Sie dispose() des Bildes haben, sich nicht zu einem Speicherverlust zu schaffen.

+0

Entschuldigung. Ich habe meine Frage aktualisiert. Das BMP, das als Byte-Array dargestellt wird, ist eine Voraussetzung. Vielen Dank. –