В настоящее время у меня есть функция загрузки, работающая с использованием компонента Upload из Vaadin, но я не уверен, как нарисовать результат изображения из файла загрузки на холст, так как я новичок в Vaadin / Java. Изображение может быть успешно загружено, но холст не появится. Мне нужен холст, так как я буду использовать его для рисования прямоугольников на загруженном впоследствии изображении.
Это мой код:
package com.vaadin.starter.beveragebuddy.backend;
import com.vaadin.flow.component.dependency.HtmlImport;
import com.vaadin.flow.component.html.H2;
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
import com.vaadin.flow.component.upload.Upload;
import com.vaadin.flow.component.upload.receivers.MultiFileMemoryBuffer;
import com.vaadin.flow.router.Route;
import java.awt.Canvas;
public class MainLayout extends VerticalLayout {
private Canvas canvas;
public MainLayout() {
H2 title = new H2("Image Annotation Tool");
MultiFileMemoryBuffer buffer = new MultiFileMemoryBuffer();
Upload upload = new Upload(buffer);
upload.addSucceededListener(event -> {
// Component component = createComponent(event.getMIMEType(),
// event.getFileName(),
// buffer.getInputStream(event.getFileName()));
// showOutput(event.getFileName(), component, output);
});
add(upload);
}
public void Test() {
Frame frame = new Frame("Testing");
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
frame.add(new ImageCanvas());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public class ImageCanvas extends Canvas {
private BufferedImage img;
public ImageCanvas() {
try {
img = ImageIO.read(new File("upload"));
} catch (IOException ex) {
ex.printStackTrace();
}
}
@Override
public Dimension getPreferredSize() {
return img == null ? new Dimension(1580, 800) : new Dimension(img.getWidth(), img.getHeight());
}
@Override
public void paint(Graphics g) {
super.paint(g);
if (img != null) {
int x = (getWidth() - img.getWidth()) / 2;
int y = (getHeight() - img.getHeight()) / 2;
g.drawImage(img, x, y, this);
}
}
}
}
Любая помощь очень ценится, спасибо!