JavaFX - Gambar
Anda dapat memuat dan memodifikasi gambar menggunakan kelas yang disediakan oleh JavaFX dalam paket javafx.scene.image. JavaFX mendukung format gambar sepertiBmp, Gif, Jpeg, Png.
Bab ini mengajarkan Anda cara memuat gambar ke JavaFX, cara memproyeksikan gambar dalam berbagai tampilan dan cara mengubah piksel gambar.
Memuat Gambar
Anda dapat memuat gambar di JavaFX dengan membuat instance kelas bernama Image dari paket javafx.scene.image.
Untuk konstruktor kelas, Anda harus meneruskan salah satu dari berikut -
Sebuah InputStream objek gambar yang akan dimuat atau,
Variabel string yang menahan URL gambar.
//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));
Setelah memuat gambar, Anda dapat mengatur tampilan untuk gambar dengan membuat instance ImageView kelas dan meneruskan gambar ke konstruktornya sebagai berikut -
ImageView imageView = new ImageView(image);
Contoh
Berikut adalah contoh yang menunjukkan bagaimana memuat gambar di JavaFX dan mengatur tampilan.
Simpan kode ini dalam file dengan nama 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);
}
}
Kompilasi dan jalankan file java yang disimpan dari command prompt menggunakan perintah berikut.
Javac ImageExample.java
java ImageExample
Saat menjalankan, program di atas menghasilkan jendela JavaFX sebagai berikut -
Beberapa Tampilan Gambar
Anda juga dapat mengatur beberapa tampilan untuk gambar dalam pemandangan yang sama. Program berikut adalah contoh yang mendemonstrasikan bagaimana mengatur berbagai tampilan untuk sebuah gambar dalam sebuah scene di JavaFX.
Simpan kode ini dalam file dengan nama 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);
}
}
Kompilasi dan jalankan file java yang disimpan dari command prompt menggunakan perintah berikut.
Javac MultipleViews.java
java MultipleViews
Saat menjalankan, program di atas menghasilkan jendela JavaFX sebagai berikut -
Piksel Menulis
JavaFX menyediakan kelas bernama PixelReader dan PixelWriterkelas untuk membaca dan menulis piksel dari suatu gambar. ItuWritableImage kelas digunakan untuk membuat gambar yang bisa ditulis.
Berikut ini adalah contoh yang menunjukkan cara membaca dan menulis piksel dari suatu gambar. Di sini, kita membaca nilai warna sebuah gambar dan membuatnya lebih gelap.
Simpan kode ini dalam file dengan nama 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);
}
}
Kompilasi dan jalankan file java yang disimpan dari command prompt menggunakan perintah berikut.
Javac WritingPixelsExample.java
java WritingPixelsExample
Saat menjalankan, program di atas menghasilkan jendela JavaFX sebagai berikut -