Update TheImaniPulator.java
This commit is contained in:
		
							parent
							
								
									49a54cf5eb
								
							
						
					
					
						commit
						235220f3e0
					
				
					 1 changed files with 43 additions and 6 deletions
				
			
		| 
						 | 
					@ -206,11 +206,13 @@ public class TheImaniPulator extends Application {
 | 
				
			||||||
        Label saveLabel = new Label("Save Options");
 | 
					        Label saveLabel = new Label("Save Options");
 | 
				
			||||||
        Label specialLabel = new Label("Special Effects");
 | 
					        Label specialLabel = new Label("Special Effects");
 | 
				
			||||||
        Label musicLabel = new Label("Music Controls");
 | 
					        Label musicLabel = new Label("Music Controls");
 | 
				
			||||||
 | 
					        Label resetLabel = new Label("Reset Options");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        filterLabel.setStyle("-fx-font-weight: bold; -fx-font-size: 16px;");
 | 
					        filterLabel.setStyle("-fx-font-weight: bold; -fx-font-size: 16px;");
 | 
				
			||||||
        saveLabel.setStyle("-fx-font-weight: bold; -fx-font-size: 16px;");
 | 
					        saveLabel.setStyle("-fx-font-weight: bold; -fx-font-size: 16px;");
 | 
				
			||||||
        specialLabel.setStyle("-fx-font-weight: bold; -fx-font-size: 16px;");
 | 
					        specialLabel.setStyle("-fx-font-weight: bold; -fx-font-size: 16px;");
 | 
				
			||||||
        musicLabel.setStyle("-fx-font-weight: bold; -fx-font-size: 16px;");
 | 
					        musicLabel.setStyle("-fx-font-weight: bold; -fx-font-size: 16px;");
 | 
				
			||||||
 | 
					        resetLabel.setStyle("-fx-font-weight: bold; -fx-font-size: 16px;");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Button blurButton = new Button("Blur");
 | 
					        Button blurButton = new Button("Blur");
 | 
				
			||||||
        Button grayscaleButton = new Button("Grayscale");
 | 
					        Button grayscaleButton = new Button("Grayscale");
 | 
				
			||||||
| 
						 | 
					@ -224,12 +226,22 @@ public class TheImaniPulator extends Application {
 | 
				
			||||||
        Button pauseMusicButton = new Button("Pause Music");
 | 
					        Button pauseMusicButton = new Button("Pause Music");
 | 
				
			||||||
        Button vignetteButton = new Button("Vignette");
 | 
					        Button vignetteButton = new Button("Vignette");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Style reset button differently
 | 
				
			||||||
 | 
					        resetButton.setStyle(
 | 
				
			||||||
 | 
					            "-fx-background-color: black;" +
 | 
				
			||||||
 | 
					            "-fx-text-fill: white;" +
 | 
				
			||||||
 | 
					            "-fx-font-family: 'SF Pro Text';" +
 | 
				
			||||||
 | 
					            "-fx-font-size: 16px;" +
 | 
				
			||||||
 | 
					            "-fx-padding: 12px 20px;" +
 | 
				
			||||||
 | 
					            "-fx-background-radius: 10px;" +
 | 
				
			||||||
 | 
					            "-fx-cursor: hand;"
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        int buttonWidth = 150;
 | 
					        int buttonWidth = 150;
 | 
				
			||||||
        for (Button btn : new Button[] {
 | 
					        for (Button btn : new Button[] {
 | 
				
			||||||
            blurButton,
 | 
					            blurButton,
 | 
				
			||||||
            grayscaleButton,
 | 
					            grayscaleButton,
 | 
				
			||||||
            sepiaButton,
 | 
					            sepiaButton,
 | 
				
			||||||
            resetButton,
 | 
					 | 
				
			||||||
            saveAsJpegButton,
 | 
					            saveAsJpegButton,
 | 
				
			||||||
            saveAsPngButton,
 | 
					            saveAsPngButton,
 | 
				
			||||||
            saveAsHeifButton,
 | 
					            saveAsHeifButton,
 | 
				
			||||||
| 
						 | 
					@ -249,9 +261,13 @@ public class TheImaniPulator extends Application {
 | 
				
			||||||
        filterGrid.add(blurButton, 0, 0);
 | 
					        filterGrid.add(blurButton, 0, 0);
 | 
				
			||||||
        filterGrid.add(grayscaleButton, 1, 0);
 | 
					        filterGrid.add(grayscaleButton, 1, 0);
 | 
				
			||||||
        filterGrid.add(sepiaButton, 0, 1);
 | 
					        filterGrid.add(sepiaButton, 0, 1);
 | 
				
			||||||
        filterGrid.add(resetButton, 1, 1);
 | 
					 | 
				
			||||||
        filterGrid.add(vignetteButton, 0, 2);
 | 
					        filterGrid.add(vignetteButton, 0, 2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        GridPane resetGrid = new GridPane();
 | 
				
			||||||
 | 
					        resetGrid.setHgap(10);
 | 
				
			||||||
 | 
					        resetGrid.setVgap(10);
 | 
				
			||||||
 | 
					        resetGrid.add(resetButton, 0, 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        GridPane saveGrid = new GridPane();
 | 
					        GridPane saveGrid = new GridPane();
 | 
				
			||||||
        saveGrid.setHgap(10);
 | 
					        saveGrid.setHgap(10);
 | 
				
			||||||
        saveGrid.setVgap(10);
 | 
					        saveGrid.setVgap(10);
 | 
				
			||||||
| 
						 | 
					@ -318,7 +334,7 @@ public class TheImaniPulator extends Application {
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        saveAsJpegButton.setOnAction(e -> {
 | 
					        saveAsJpegButton.setOnAction(e -> {
 | 
				
			||||||
            saveImage(primaryStage, "jpeg");
 | 
					            saveImage(primaryStage, "jpg"); // Changed from jpeg to jpg
 | 
				
			||||||
            updateStatus("Saving as JPEG");
 | 
					            updateStatus("Saving as JPEG");
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -389,6 +405,8 @@ public class TheImaniPulator extends Application {
 | 
				
			||||||
                titleLabel,
 | 
					                titleLabel,
 | 
				
			||||||
                filterLabel,
 | 
					                filterLabel,
 | 
				
			||||||
                filterGrid,
 | 
					                filterGrid,
 | 
				
			||||||
 | 
					                resetLabel,
 | 
				
			||||||
 | 
					                resetGrid,
 | 
				
			||||||
                saveLabel,
 | 
					                saveLabel,
 | 
				
			||||||
                saveGrid,
 | 
					                saveGrid,
 | 
				
			||||||
                specialLabel,
 | 
					                specialLabel,
 | 
				
			||||||
| 
						 | 
					@ -444,10 +462,29 @@ public class TheImaniPulator extends Application {
 | 
				
			||||||
            File file = fileChooser.showSaveDialog(stage);
 | 
					            File file = fileChooser.showSaveDialog(stage);
 | 
				
			||||||
            if (file != null) {
 | 
					            if (file != null) {
 | 
				
			||||||
                try {
 | 
					                try {
 | 
				
			||||||
                    BufferedImage bufferedImage = SwingFXUtils.fromFXImage(
 | 
					                    // Get the original image directly instead of taking a snapshot
 | 
				
			||||||
                        imageView.getImage(),
 | 
					                    Image image = imageView.getImage();
 | 
				
			||||||
                        null
 | 
					                    int width = (int) image.getWidth();
 | 
				
			||||||
 | 
					                    int height = (int) image.getHeight();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    BufferedImage bufferedImage = new BufferedImage(
 | 
				
			||||||
 | 
					                        width,
 | 
				
			||||||
 | 
					                        height,
 | 
				
			||||||
 | 
					                        BufferedImage.TYPE_INT_RGB
 | 
				
			||||||
                    );
 | 
					                    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    PixelReader reader = image.getPixelReader();
 | 
				
			||||||
 | 
					                    for (int x = 0; x < width; x++) {
 | 
				
			||||||
 | 
					                        for (int y = 0; y < height; y++) {
 | 
				
			||||||
 | 
					                            Color color = reader.getColor(x, y);
 | 
				
			||||||
 | 
					                            int rgb =
 | 
				
			||||||
 | 
					                                ((int) (color.getRed() * 255) << 16) |
 | 
				
			||||||
 | 
					                                ((int) (color.getGreen() * 255) << 8) |
 | 
				
			||||||
 | 
					                                ((int) (color.getBlue() * 255));
 | 
				
			||||||
 | 
					                            bufferedImage.setRGB(x, y, rgb);
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    ImageIO.write(bufferedImage, format, file);
 | 
					                    ImageIO.write(bufferedImage, format, file);
 | 
				
			||||||
                } catch (IOException ex) {
 | 
					                } catch (IOException ex) {
 | 
				
			||||||
                    Alert alert = new Alert(AlertType.ERROR);
 | 
					                    Alert alert = new Alert(AlertType.ERROR);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue