Почему размер изображения в JavaFx зависит от того, идет ли загрузка в фоновом режиме? - PullRequest
0 голосов
/ 01 сентября 2018

При попытке загрузить изображения из URL-адресов было странное поведение, когда размер изображения был несовместимым, изображения имели полный размер, только если они загружены в фоновом режиме, а затем ожидают прогресса. Чтобы проанализировать ситуацию, я создал тест JUnit ниже. Ожидаемый размер в фоновом режиме не соответствует размеру загруженных изображений.

Почему размер изображения зависит от того, загружено ли изображение в фоновом режиме или нет?

 @Test
  public void testImage() throws InterruptedException {
    // do not exit on close of last window
    // https://stackoverflow.com/a/10217157/1497139
    Platform.setImplicitExit(false);
    /// https://stackoverflow.com/a/38883432/1497139
    // http://www.programcreek.com/java-api-examples/index.php?api=com.sun.javafx.application.PlatformImpl
    com.sun.javafx.application.PlatformImpl.startup(() -> {
    });
    String urls[] = {
        "https://upload.wikimedia.org/wikipedia/commons/thumb/b/ba/Flag_of_Germany.svg/320px-Flag_of_Germany.svg.png",
        "https://via.placeholder.com/50x50" };
    int expectedWidth[][] = { { 160, 25 }, { 320, 50 } };
    int expectedHeight[][] = { { 96, 251 }, { 192, 50 } };
    boolean backgrounds[] = { false, true };
    int i = 0;
    for (boolean background : backgrounds) {
      int j=0;
      for (String url : urls) {
        Image image = new Image(url, background);
        assertNotNull(image);
        if (background)
          while (image.getProgress() < 1)
            Thread.sleep(40);
        assertEquals("w " + i+ ","+j, expectedWidth[i][j], image.getWidth(), 0.1);
        assertEquals("h " + i+ ","+j, expectedHeight[i][j], image.getHeight(), 0.1);
        j++;
      }
      i++;
    }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...