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 -