【发布时间】:2018-12-08 16:08:01
【问题描述】:
我一直在尝试从我的 JavaFX 媒体播放器中拍摄快照,但它一直给我一个过度饱和的图像。
从兴奋按钮拍摄的过饱和图像示例。 Sample of the over saturated image taken from excited button.
我对如何制作普通快照一无所知。
我们将不胜感激任何帮助和建议。先感谢您。 :)
这是我的 Java 代码:
public class FXMLDocumentController implements Initializable {
private MediaPlayer mediaPlayer;
@FXML
private MediaView mediaView;
private String filePath;
@FXML
private Slider seekSlider;
@FXML
private void handleButtonAction(ActionEvent event) {
FileChooser fileChooser = new FileChooser();
FileChooser.ExtensionFilter filter = new FileChooser.ExtensionFilter("Select a File ('.mp4')", "*.mp4");
fileChooser.getExtensionFilters().add(filter);
File file = fileChooser.showOpenDialog(null);
filePath = file.toURI().toString();
if(filePath != null){
Media media = new Media(filePath);
mediaPlayer = new MediaPlayer(media);
mediaView.setMediaPlayer(mediaPlayer);
mediaPlayer.currentTimeProperty().addListener(new ChangeListener<Duration>() {
@Override
public void changed(ObservableValue<? extends Duration> observable, Duration oldValue, Duration newValue) {
seekSlider.setMin(0.0);
seekSlider.setValue(0.0);
seekSlider.setMax(mediaPlayer.getTotalDuration().toSeconds());
seekSlider.setValue(newValue.toSeconds());
}
});
seekSlider.setOnMouseClicked(new EventHandler<MouseEvent>(){
@Override
public void handle(MouseEvent event) {
mediaPlayer.seek(Duration.seconds(seekSlider.getValue()));
}
});
mediaPlayer.play();
}
}
@FXML
private void pauseVideo(ActionEvent event){
mediaPlayer.pause();
}
@FXML
private void playVideo(ActionEvent event){
mediaPlayer.play();
}
@FXML
private void stopVideo(ActionEvent event){
mediaPlayer.stop();
}
@FXML
private void exit(ActionEvent event){
System.exit(0);
}
@FXML
private void excitedCapture(ActionEvent event) throws IOException{
WritableImage img = mediaView.snapshot(new SnapshotParameters(), null);
BufferedImage bufImg = SwingFXUtils.fromFXImage(img, null);
ImageIO.write(bufImg, "jpg", new File("hi.jpg"));
}
@Override
public void initialize(URL url, ResourceBundle rb) {
// TODO
}
【问题讨论】:
标签: java image javafx fxml snapshot