0

以下はサンプルコードです。6 つの画像を読み込んで画面に表示する場所。各画像サイズは 2.3 MB です。そのため、各イメージをロードすると、ロードされたイメージごとに約 3 MB のメモリ消費量が増加するはずです。しかし、画像ごとに 10 MB をロードすることがわかりました。

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import javafx.application.Application;
import javafx.geometry.Orientation;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.ScrollBar;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class Test extends Application {

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

@Override
public void start(Stage primaryStage) throws Exception {
ScrollBar bar = new ScrollBar();
bar.setOrientation(Orientation.VERTICAL);


final VBox box = new VBox();
Group root = new Group();
root.getChildren().addAll(box, bar);
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.setTitle("Layout Sample");
primaryStage.show();


for (int ik = 0; ik < 6; ik++) {
    System.out.println("1");
    ImageView i = new ImageView();
    InputStream is = new FileInputStream(new File("C:\\Users\\Jatin\\Documents\\BarcodeNew\\w.png"));
    Image im = new Image(is);
    i.setImage(im);
    box.getChildren().add(i);
    is.close();
}

//r.close();


}
}

私のアプリケーションでは、1.3MB のイメージが 50MB のスペースを占めていることがわかりました。理由はありますか?

4

1 に答える 1

6

PNG 画像のファイル サイズとメモリ内の圧縮されていない画像のメモリ消費量は大きく異なることに注意してください。

于 2013-02-15T08:03:51.907 に答える