JavaFX - छवियां

आप पैकेज में JavaFX द्वारा प्रदान की गई कक्षाओं का उपयोग करके छवियों को लोड और संशोधित कर सकते हैं javafx.scene.image। JavaFX छवि स्वरूपों का समर्थन करता हैBmp, Gif, Jpeg, Png

यह अध्याय आपको सिखाता है कि जावाएफएक्स में छवियों को कैसे लोड किया जाए, कैसे एक छवि को कई दृश्यों में प्रोजेक्ट किया जाए और एक छवि के पिक्सल को कैसे बदला जाए।

एक छवि लोड हो रहा है

आप JavaFX में एक इमेज को लोड कर सकते हैं जिसका नाम रखा गया है Image पैकेज का javafx.scene.image

वर्ग के निर्माता के लिए, आपको निम्नलिखित में से किसी एक को पास करना होगा -

  • एक InputStream लोड की जाने वाली छवि की वस्तु या

  • छवि के लिए URL रखने वाला एक स्ट्रिंग चर।

//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));

इमेज लोड करने के बाद, आप इंस्टेंटिट करके इमेज के लिए व्यू सेट कर सकते हैं ImageView क्लास और इमेज को इसके कंस्ट्रक्टर के पास भेजना इस प्रकार है -

ImageView imageView = new ImageView(image);

उदाहरण

निम्नलिखित एक उदाहरण है जो दर्शाता है कि जावाएफएक्स में एक छवि को कैसे लोड किया जाए और दृश्य सेट किया जाए।

इस कोड को नाम वाली फ़ाइल में सहेजें 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); 
   } 
}

निम्न कमांड का उपयोग करके कमांड प्रॉम्प्ट से सहेजे गए जावा फ़ाइल को संकलित और निष्पादित करें।

Javac ImageExample.java 
java ImageExample

निष्पादित करने पर, उपरोक्त कार्यक्रम एक जावाएफएक्स विंडो बनाता है -

एक छवि के कई दृश्य

आप एक ही दृश्य में एक छवि के लिए कई दृश्य भी सेट कर सकते हैं। निम्नलिखित कार्यक्रम एक उदाहरण है जो दर्शाता है कि जावाएफएक्स में एक दृश्य में एक छवि के लिए विभिन्न दृश्य कैसे सेट करें।

इस कोड को नाम वाली फ़ाइल में सहेजें 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); 
   } 
}

निम्न कमांड का उपयोग करके कमांड प्रॉम्प्ट से सहेजे गए जावा फ़ाइल को संकलित और निष्पादित करें।

Javac MultipleViews.java 
java MultipleViews

निष्पादित करने पर, उपरोक्त कार्यक्रम एक जावाएफएक्स विंडो बनाता है -

पिक्सल्स लिखना

JavaFX नाम की कक्षाएं प्रदान करता है PixelReader तथा PixelWriterएक छवि के पिक्सल को पढ़ने और लिखने के लिए कक्षाएं। WritableImage वर्ग का उपयोग एक लिखने योग्य छवि बनाने के लिए किया जाता है।

निम्नलिखित एक उदाहरण है जो प्रदर्शित करता है कि किसी छवि के पिक्सेल को कैसे पढ़ना और लिखना है। यहां, हम एक छवि का रंग मूल्य पढ़ रहे हैं और इसे गहरा बना रहे हैं।

इस कोड को नाम वाली फ़ाइल में सहेजें 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); 
   } 
}

निम्न कमांड का उपयोग करके कमांड प्रॉम्प्ट से सहेजे गए जावा फ़ाइल को संकलित और निष्पादित करें।

Javac WritingPixelsExample.java 
java WritingPixelsExample

निष्पादित करने पर, उपरोक्त कार्यक्रम एक जावाएफएक्स विंडो बनाता है -