这来自简单的base64编码器/解码器程序。我添加了拖放功能,以便用户可以将图像文件拖放到程序上。 d&d可以工作,但是现在我希望程序自动对拖放的图像进行编码并显示其base64字符串。
此方法主要是同一程序中另一方法的再生代码,允许用户上传图像并将其编码为base64字符串。这里的问题是,即使显示图像,每次也会抛出IOException。因此图像无法读取到byte [] ...但是我不知道为什么。
// a method that handles drop events
@FXML
private void handleDrop(DragEvent event) throws FileNotFoundException
{
// display the image on file drop
List<File> files = event.getDragboard().getFiles();
Image img = new Image(new FileInputStream(files.get(0)));
imageDisplay.setImage(img);
// encode the image on file drop
byte[] imageBytes;
try {
File droppedFile = new File("/path");
Path path = Paths.get(droppedFile.getAbsolutePath());
imageBytes = Files.readAllBytes(path);
} catch (IOException e) {
showAlert(Alert.AlertType.ERROR, "Byte reader error", "Sorry, I was unable to read the file to a byte array.");
return;
}
String encodedString = Base64.getEncoder().encodeToString(imageBytes);
textArea.setText(encodedString);
}
我想让这种方法像这样工作: -用户将图像文件拖到程序窗口中 用户删除图像文件 -image在程序的图像查看器中显示 编码的图像字符串显示在适当的窗口中