Which Image Formats does JavaFX Support?

2019-01-24 09:50发布

问题:

I am looking for a list of Image Types (latest) JavaFX supports, e.g. PNG, JPEG, TIFF. Different search engines did not help ... any idea where to start?

More particulary I am interested in 16 Bit grayscale images (in different formats) and the rare supported jpg-lossless standard.

回答1:

The list below was generated based on the options that Fireworks and Photoshop allow one to Save As: plus a few selected formats by me considering what is commonly found and that have some support on ImageJ.

Therefore the doesn't mean that the format is natively supported in ImageJ, but it means that it is possible to open in ImageJ even if it requires additional plugins. And this list is not a complete list of what is supported on ImageJ, for a more detailed one (including whether the support is native or through plugin please check this page)

File Format:    bits                details         Native support      ImageJ

PNG              32     fireworks format .fw.png          ✓               ✓
                 32              flat format              ✓               ✓
                 24              flat format              ✓               ✓

                 8               flat format              ✓               ✓
GIF              8       2 colours (black & white)        ✓               ✓
                 8               16 colours               ✓               ✓
                 8               256 colours              ✓               ✓ 

JPG              24             Quality: 100%             ✓               ✓
                 24         100% && Smoothing = 8         ✓               ✓
JPS (JPG Stereo) 24                                       ✓               ✓

MPO              24                                       ✓               ✓

TIFF             32                                       ✘               ✓
                 24                                       ✘               ✓
                  8                                       ✘               ✓

JPEG2000                                                  ✘               ✓
EPS                                                       ✘               ✓
TGA                                                       ✘               ✓
RAW (photoshop)                                           ✘               ✓
PSD                                                       ✘               ✓
FITs                                                      ✘               ✓
PGM (.pgm)                                                ✘               ✓
PPM (.ppm)                                                ✘               ✓
PBM (.pbm)                                                ✘               ✓
DICOM                                                     ✘               ✓
NiFTI                                                     ✘               ✓
PICT                                                      ✘               ✓
ICO                                                       ✘               ✓
ANALYZE                                                   ✘               ✓
MOV                                                       ✘               ✓
SPE (.spe)                                                ✘               ✓
PIC                                                       ✘               ✓
AVI (.avi)                                                ✘               ✓
CUR                                                       ✘               ✓
PXR (Pixar)                                               ✘               ✘ 
SCT (Scitex)                                              ✘               ✘ 
IFF                                                       ✘               ✘ 
WBMP                                                      ✘               ✘ 
PDF                                                       ✘               ✘ 

This test was made on a Windows 8.1 with:

java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode)

Source code used to create this list:

import java.io.File;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;

public class JavaFXSupportedImages extends Application {

    @Override
    public void start(Stage primaryStage) {
        File dir = new File("formats_supported_on_javaFX_folder");//Folder Path
        File[] images = dir.listFiles();
        GridPane root = new GridPane();
        int col=0, row=0;
        for(File f: images){
            Button btn = new Button(f.getName());
            try{
                Image fximage = new Image(f.toURI().toURL().toString());
                ImageView pic = new ImageView();
                pic.setImage(fximage);
                pic.setFitWidth(130);
                pic.setFitHeight(50);
                btn.setGraphic(pic);
            }catch(Exception e){
                System.out.println("JavaFX doesn't support: " + btn.getText());
            }
            if(col>3){
                col=0;
                row++;
            }
            else
            {
                col++;
            }
            root.add(btn, col, row);
        }
        Scene scene = new Scene(root, 300, 250);    
        primaryStage.setTitle("JavaFX Support test!");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }

}