JavaFX - Görüntüler

Pakette JavaFX tarafından sağlanan sınıfları kullanarak görüntüleri yükleyebilir ve değiştirebilirsiniz. javafx.scene.image. JavaFX, aşağıdaki gibi görüntü formatlarını desteklerBmp, Gif, Jpeg, Png.

Bu bölüm, JavaFX'e görüntüleri nasıl yükleyeceğinizi, bir görüntünün birden çok görünümde nasıl yansıtılacağını ve bir görüntünün piksellerini nasıl değiştireceğinizi öğretir.

Resim Yükleme

JavaFX'te bir görüntüyü, adlı sınıfı başlatarak yükleyebilirsiniz. Image paketin javafx.scene.image.

Sınıfın kurucusuna aşağıdakilerden birini iletmelisiniz -

  • Bir InputStream yüklenecek görüntünün nesnesi veya

  • Resmin URL'sini tutan bir dize değişkeni.

//Passing FileInputStream object as a parameter 
FileInputStream inputstream = new FileInputStream("C:\\images\\image.jpg"); 
Image image = new Image(inputstream); 
         
//Loading image from URL 
//Image image = new Image(new FileInputStream("url for the image));

Görüntüyü yükledikten sonra, görüntüyü örnekleyerek görüntünün görünümünü ayarlayabilirsiniz. ImageView sınıf ve görüntüyü yapıcısına aşağıdaki gibi geçirme -

ImageView imageView = new ImageView(image);

Misal

Aşağıda, JavaFX'te bir görüntünün nasıl yükleneceğini ve görünümün nasıl ayarlanacağını gösteren bir örnek verilmiştir.

Bu kodu adıyla bir dosyaya kaydedin ImageExample.java.

import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import javafx.application.Application; 
import javafx.scene.Group; 
import javafx.scene.Scene; 
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;  
import javafx.stage.Stage;  

public class ImageExample extends Application {  
   @Override 
   public void start(Stage stage) throws FileNotFoundException {         
      //Creating an image 
      Image image = new Image(new FileInputStream("path of the image"));  
      
      //Setting the image view 
      ImageView imageView = new ImageView(image); 
      
      //Setting the position of the image 
      imageView.setX(50); 
      imageView.setY(25); 
      
      //setting the fit height and width of the image view 
      imageView.setFitHeight(455); 
      imageView.setFitWidth(500); 
      
      //Setting the preserve ratio of the image view 
      imageView.setPreserveRatio(true);  
      
      //Creating a Group object  
      Group root = new Group(imageView);  
      
      //Creating a scene object 
      Scene scene = new Scene(root, 600, 500);  
      
      //Setting title to the Stage 
      stage.setTitle("Loading an image");  
      
      //Adding scene to the stage 
      stage.setScene(scene);
      
      //Displaying the contents of the stage 
      stage.show(); 
   }  
   public static void main(String args[]) { 
      launch(args); 
   } 
}

Kaydedilen java dosyasını aşağıdaki komutları kullanarak komut isteminden derleyin ve yürütün.

Javac ImageExample.java 
java ImageExample

Yürütüldüğünde, yukarıdaki program aşağıdaki gibi bir JavaFX penceresi oluşturur -

Bir Resmin Birden Fazla Görünümü

Aynı sahnedeki bir görüntü için birden fazla görünüm de ayarlayabilirsiniz. Aşağıdaki program, JavaFX'te bir sahnedeki bir görüntü için çeşitli görünümlerin nasıl ayarlanacağını gösteren bir örnektir.

Bu kodu adıyla bir dosyaya kaydedin MultipleViews.java.

import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import javafx.application.Application; 
import javafx.scene.Group; 
import javafx.scene.Scene; 
import javafx.scene.image.Image;  
import javafx.scene.image.ImageView; 
import javafx.stage.Stage;  

public class MultipleViews extends Application {  
   @Override 
   public void start(Stage stage) throws FileNotFoundException {         
      //Creating an image 
      Image image = new Image(new FileInputStream("file path"));  
      
      //Setting the image view 1 
      ImageView imageView1 = new ImageView(image); 
      
      //Setting the position of the image 
      imageView1.setX(50); 
      imageView1.setY(25); 
      
      //setting the fit height and width of the image view 
      imageView1.setFitHeight(300); 
      imageView1.setFitWidth(250);         
      
      //Setting the preserve ratio of the image view 
      imageView1.setPreserveRatio(true); 
         
      //Setting the image view 2 
      ImageView imageView2 = new ImageView(image);
      
      //Setting the position of the image 
      imageView2.setX(350); 
      imageView2.setY(25); 
      
      //setting the fit height and width of the image view 
      imageView2.setFitHeight(150); 
      imageView2.setFitWidth(250);          
      
      //Setting the preserve ratio of the image view 
      imageView2.setPreserveRatio(true); 
         
      //Setting the image view 3 
      ImageView imageView3 = new ImageView(image);  
      
      //Setting the position of the image 
      imageView3.setX(350); 
      imageView3.setY(200); 
      
      //setting the fit height and width of the image view 
      imageView3.setFitHeight(100); 
      imageView3.setFitWidth(100);         
      
      //Setting the preserve ratio of the image view 
      imageView3.setPreserveRatio(true);  
      
      //Creating a Group object  
      Group root = new Group(imageView1, imageView2, imageView3);  
      
      //Creating a scene object 
      Scene scene = new Scene(root, 600, 400);  
      
      //Setting title to the Stage 
      stage.setTitle("Multiple views of an image");  
      
      //Adding scene to the stage 
      stage.setScene(scene);  
      
      //Displaying the contents of the stage
      stage.show(); 
   }  
   public static void main(String args[]) { 
      launch(args); 
   } 
}

Kaydedilen java dosyasını aşağıdaki komutları kullanarak komut isteminden derleyin ve yürütün.

Javac MultipleViews.java 
java MultipleViews

Yürütüldüğünde, yukarıdaki program aşağıdaki gibi bir JavaFX penceresi oluşturur -

Piksel Yazma

JavaFX adlı sınıflar sağlar PixelReader ve PixelWriterbir görüntünün piksellerini okumak ve yazmak için sınıflar. WritableImage sınıf, yazılabilir bir görüntü oluşturmak için kullanılır.

Aşağıda, bir görüntünün piksellerinin nasıl okunacağını ve yazılacağını gösteren bir örnek verilmiştir. Burada bir görüntünün renk değerini okuyor ve koyulaştırıyoruz.

Bu kodu adıyla bir dosyaya kaydedin WritingPixelsExample.java.

import java.io.FileInputStream; 
import java.io.FileNotFoundException;  
import javafx.application.Application; 

import javafx.scene.Group;  
import javafx.scene.Scene; 

import javafx.scene.image.Image; 
import javafx.scene.image.ImageView; 
import javafx.scene.image.PixelReader; 
import javafx.scene.image.PixelWriter; 
import javafx.scene.image.WritableImage;
 
import javafx.scene.paint.Color; 
import javafx.stage.Stage;  

public class WritingPixelsExample extends Application {  
   @Override 
   public void start(Stage stage) throws FileNotFoundException {         
      //Creating an image 
      Image image = new Image(new FileInputStream("C:\\images\\logo.jpg")); 
      int width = (int)image.getWidth(); 
      int height = (int)image.getHeight(); 
         
      //Creating a writable image 
      WritableImage wImage = new WritableImage(width, height); 
         
      //Reading color from the loaded image 
      PixelReader pixelReader = image.getPixelReader(); 
      
      //getting the pixel writer 
      PixelWriter writer = wImage.getPixelWriter();           
      
      //Reading the color of the image 
      for(int y = 0; y < height; y++) { 
         for(int x = 0; x < width; x++) { 
            //Retrieving the color of the pixel of the loaded image   
            Color color = pixelReader.getColor(x, y); 
              
            //Setting the color to the writable image 
            writer.setColor(x, y, color.darker());              
         }
      }	
      //Setting the view for the writable image 
      ImageView imageView = new ImageView(wImage); 
              
      //Creating a Group object  
      Group root = new Group(imageView);  
            
      //Creating a scene object 
      Scene scene = new Scene(root, 600, 500);  
            
      //Setting title to the Stage 
      stage.setTitle("Writing pixels ");  
            
      //Adding scene to the stage 
      stage.setScene(scene);  
            
      //Displaying the contents of the stage 
      stage.show();  
   }
   public static void main(String args[]) { 
      launch(args); 
   } 
}

Kaydedilen java dosyasını aşağıdaki komutları kullanarak komut isteminden derleyin ve yürütün.

Javac WritingPixelsExample.java 
java WritingPixelsExample

Yürütüldüğünde, yukarıdaki program aşağıdaki gibi bir JavaFX penceresi oluşturur -