【发布时间】:2016-02-12 22:27:01
【问题描述】:
当我在 JavaFX 中加载 15Mb 的图像时,它需要大约 250Mb 的 RAM!
Image imageColored = new Image("file:C:\\Users\\user\\Desktop\\portret.jpg");
ImageViewResizable imageView = new ImageViewResizable(imageColored);
复制它需要 10 秒,并将 RAM 使用量增加到 1Gb。
WritableImage imageBlack;
int width = (int) imageColored.getWidth();
int height = (int) imageColored.getHeight();
//make img black and white;
imageBlack = new WritableImage(width, height);
PixelReader pixelReader = imageColored.getPixelReader();
PixelWriter pixelWriter = imageBlack.getPixelWriter();
for (int x = 0; x < width; x++)
for (int y = 0; y < height; y++) {
Color color = pixelReader.getColor(x, y);
double grey = (color.getBlue() + color.getGreen() + color.getRed()) / 3;
pixelWriter.setColor(x, y, new Color(grey, grey, grey, color.getOpacity()));
}
我怎样才能有效地减少内存使用和复制图像?
【问题讨论】:
标签: java image javafx imageview javafx-2