Когда я загружаю изображение 15 Мб в JavaFX, он занимает около 250 МБ ОЗУ!Проблемы с памятью памяти JavaFX
Image imageColored = new Image("file:C:\\Users\\user\\Desktop\\portret.jpg");
ImageViewResizable imageView = new ImageViewResizable(imageColored);
И копирование занимает 10 секунд и увеличивает объем использования ОЗУ до 1 ГБ.
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.awt.Image image = new ImageIcon (path) .getImage(); _ и он дал мне то же самое время и результаты памяти. Так есть ли какое-нибудь руководство, как правильно читать изображения в java? –
Вам нужно прочитать изображение и уменьшить его при чтении. Вы можете сделать это, указав требуемый размер в конструкторе ['Image'] (http://docs.oracle.com/javase/8/javafx/api/javafx/scene/image/Image.html#Image-java .lang.String-double-double-boolean-boolean-) –
WOW, это действительно сработало! Я не был очень внимателен. Использование памяти и время резко сократилось, а глупое мерцание исчезло, спасибо! –