javafx 큰 이미지 충돌

user4250202

JavaFX 입문

이 예제는 작은 이미지에서 잘 작동합니다. 그러나 큰 이미지는 ImageView와 충돌합니다.

내 예제 코드에 결함이 있습니까? JavaFX에서 큰 이미지에 문제가 있습니까? 다른 것?

웹에서 예제를 가져 왔습니다.

http://www.java2s.com/Code/Java/JavaFX/JavaFXImageZoomExample.htm

PDF 파일을 다운로드하고 처리합니다.

http://optics.byu.edu/BYUOpticsBook_2013.pdf

gs -sDEVICE=png16m -dNOPAUSE -dBATCH -dSAFER \
   -r600 -dFirstPage=1 -dLastPage=1 \
   -sOutputFile=001.png BYUOpticsBook_2013.pdf 

이것은 5100 × 6600 픽셀 이미지를 제공합니다.

이미지를 보려고합니다. 몇 초 후 빈 스크롤 창과 콘솔에 스택 트레이스가있는 창이 나타납니다.

import javafx.application.Application;
import javafx.beans.InvalidationListener;
import javafx.beans.Observable;
import javafx.beans.property.DoubleProperty;
import javafx.beans.property.SimpleDoubleProperty;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.ScrollPane;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.input.ScrollEvent;
import javafx.stage.Stage;

/**
 *
 * @author O.J. Sousa Rodrigues (office at halbgasse.at)
 */
public class ZoomExample extends Application {

  private ImageView imageView = new ImageView();
  private ScrollPane scrollPane = new ScrollPane();
  final DoubleProperty zoomProperty = new SimpleDoubleProperty(200);

  @Override
  public void start(Stage stage) throws Exception {

    zoomProperty.addListener(new InvalidationListener() {
      @Override
      public void invalidated(Observable arg0) {
        imageView.setFitWidth(zoomProperty.get() * 4);
        imageView.setFitHeight(zoomProperty.get() * 3);
      }
    });

    scrollPane.addEventFilter(ScrollEvent.ANY,
        new EventHandler<ScrollEvent>() {

      @Override
      public void handle(ScrollEvent event) {
        if (event.getDeltaY() > 0) {
          zoomProperty.set(zoomProperty.get() * 1.1);
        } else if (event.getDeltaY() < 0) {
          zoomProperty.set(zoomProperty.get() / 1.1);
        }
      }
    });

    imageView.setImage(new Image("file:///home/jeff/001.png"));
    imageView.preserveRatioProperty().set(true);
    scrollPane.setContent(imageView);

    stage.setScene(new Scene(scrollPane, 400, 300));
    stage.show();

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

스택 트레이스 :

java.lang.NullPointerException
at com.sun.prism.sw.SWGraphics.drawTexture(SWGraphics.java:686)
at com.sun.prism.sw.SWGraphics.drawTexture(SWGraphics.java:665)
at com.sun.prism.sw.SWGraphics.drawTexture(SWGraphics.java:648)
at com.sun.javafx.sg.prism.NGImageView.renderContent(NGImageView.java:123)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2067)
at com.sun.javafx.sg.prism.NGImageView.doRender(NGImageView.java:103)
at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1959)
at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:235)
at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:576)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2067)
at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1959)
at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:235)
at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:576)
at com.sun.javafx.sg.prism.NGNode.renderForClip(NGNode.java:2308)
at com.sun.javafx.sg.prism.NGNode.renderRectClip(NGNode.java:2202)
at com.sun.javafx.sg.prism.NGNode.renderClip(NGNode.java:2228)
at com.sun.javafx.sg.prism.CacheFilter.impl_renderNodeToCache(CacheFilter.java:663)
at com.sun.javafx.sg.prism.CacheFilter.render(CacheFilter.java:567)
at com.sun.javafx.sg.prism.NGNode.renderCached(NGNode.java:2372)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2058)
at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1959)
at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:235)
at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:576)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2067)
at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1959)
at com.sun.javafx.tk.quantum.ViewPainter.doPaint(ViewPainter.java:474)
at com.sun.javafx.tk.quantum.ViewPainter.paintImpl(ViewPainter.java:327)
at com.sun.javafx.tk.quantum.UploadingPainter.run(UploadingPainter.java:135)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at com.sun.javafx.tk.RenderJob.run(RenderJob.java:58)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
at java.lang.Thread.run(Thread.java:745) 
호세 페레 다

Jira에보고 된 몇 가지 버그가 있습니다 (이를 읽으려면 등록해야 함) :

  • 이미지를 렌더링 할 때 RT-21998 NullPointerException 발생
  • RT-22669 큰 이미지를 렌더링 할 때 텍스처로드 실패의 경우를 처리해야합니다.
  • RT-22073 크기가 최대 텍스처 크기보다 큰 경우 스냅 샷에서 예외 발생 ...

설정을 확인하려면이 옵션 -Dprism.verbose = true를 활성화하십시오.

또한이 링크 를 따라 비디오 메모리를 설정하는 옵션이 있습니다. "-Dprism.poolstats = true"를 사용하여 텍스처 풀의 실제 사용량을 모니터링하여 상한선을 더 잘 결정하고 "-Dprism.maxvram = XX"를 해당 제한 (XX = 500m, ...)으로 설정하십시오.

그래도 테스트하지 않았습니다. 이미지에 대한 링크를 게시 할 수 있습니까?

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

JavaFX의 이미지 충돌 / 교차

분류에서Dev

ImageView에 큰 이미지를 넣어서 발생하는`OutOfMemory` 충돌을 방지하는 방법

분류에서Dev

이미지와의 충돌

분류에서Dev

큰 데이터 집합을 반환 할 때 Excel이 충돌 함

분류에서Dev

큰 숫자가 주어지면 프로그램 충돌

분류에서Dev

javacc 문법 충돌 토큰

분류에서Dev

진행률 표시 줄 업데이트 충돌 javaFX

분류에서Dev

JavaFX 스레드 충돌

분류에서Dev

파이 게임의 이미지 충돌

분류에서Dev

큰 데이터 세트가 Python 스크립트를 충돌시킵니다.

분류에서Dev

Python PIL 이미지 캡처 충돌

분류에서Dev

이미지 선택시 앱 충돌

분류에서Dev

JavaFX에서 팔각형 내부의 원에 대한 충돌 감지

분류에서Dev

JavaFX 플랫폼이 종료 된 것 같습니다 (닫힘 / 충돌)

분류에서Dev

NSMutableArray 돌연변이 충돌

분류에서Dev

장치 토큰이 유효하지 않은 경우 iOS 장치 충돌에 푸시 알림 보내기

분류에서Dev

원과 직사각형 사이의 충돌이 모서리에서 작동하지 않음 (javafx)

분류에서Dev

BabylonJS : 충돌 감지

분류에서Dev

AndEngine 충돌 감지

분류에서Dev

ImageView 충돌 감지

분류에서Dev

$ @가 bash에서 큰 따옴표와 충돌하는 것을 어떻게 방지합니까?

분류에서Dev

메모리 충돌없이 큰 청크를 json 파일에 어떻게 저장할 수 있습니까?

분류에서Dev

Python 비밀 라이브러리와 토큰 충돌 가능성은 얼마나됩니까?

분류에서Dev

매우 큰 파일을 / tmp /에 쓰고 디스크 공간이 부족하여 nvprof가 충돌합니다.

분류에서Dev

자바 스크립트에서 브라우저 충돌없이 큰 배열 매핑

분류에서Dev

큰 Blob 값을 스캔하면 HBase 클러스터가 충돌하는 이유는 무엇입니까?

분류에서Dev

큰 벡터를 처리하면 프로그램이 bad_alloc과 충돌합니다.

분류에서Dev

컴퓨터 충돌없이 프로그램 R에서 큰 shapefile을 어떻게 잘라낼 수 있습니까?

분류에서Dev

더 큰 애플리케이션은 잠재적 (웹) 소켓 포트 충돌을 어떻게 처리합니까?

Related 관련 기사

  1. 1

    JavaFX의 이미지 충돌 / 교차

  2. 2

    ImageView에 큰 이미지를 넣어서 발생하는`OutOfMemory` 충돌을 방지하는 방법

  3. 3

    이미지와의 충돌

  4. 4

    큰 데이터 집합을 반환 할 때 Excel이 충돌 함

  5. 5

    큰 숫자가 주어지면 프로그램 충돌

  6. 6

    javacc 문법 충돌 토큰

  7. 7

    진행률 표시 줄 업데이트 충돌 javaFX

  8. 8

    JavaFX 스레드 충돌

  9. 9

    파이 게임의 이미지 충돌

  10. 10

    큰 데이터 세트가 Python 스크립트를 충돌시킵니다.

  11. 11

    Python PIL 이미지 캡처 충돌

  12. 12

    이미지 선택시 앱 충돌

  13. 13

    JavaFX에서 팔각형 내부의 원에 대한 충돌 감지

  14. 14

    JavaFX 플랫폼이 종료 된 것 같습니다 (닫힘 / 충돌)

  15. 15

    NSMutableArray 돌연변이 충돌

  16. 16

    장치 토큰이 유효하지 않은 경우 iOS 장치 충돌에 푸시 알림 보내기

  17. 17

    원과 직사각형 사이의 충돌이 모서리에서 작동하지 않음 (javafx)

  18. 18

    BabylonJS : 충돌 감지

  19. 19

    AndEngine 충돌 감지

  20. 20

    ImageView 충돌 감지

  21. 21

    $ @가 bash에서 큰 따옴표와 충돌하는 것을 어떻게 방지합니까?

  22. 22

    메모리 충돌없이 큰 청크를 json 파일에 어떻게 저장할 수 있습니까?

  23. 23

    Python 비밀 라이브러리와 토큰 충돌 가능성은 얼마나됩니까?

  24. 24

    매우 큰 파일을 / tmp /에 쓰고 디스크 공간이 부족하여 nvprof가 충돌합니다.

  25. 25

    자바 스크립트에서 브라우저 충돌없이 큰 배열 매핑

  26. 26

    큰 Blob 값을 스캔하면 HBase 클러스터가 충돌하는 이유는 무엇입니까?

  27. 27

    큰 벡터를 처리하면 프로그램이 bad_alloc과 충돌합니다.

  28. 28

    컴퓨터 충돌없이 프로그램 R에서 큰 shapefile을 어떻게 잘라낼 수 있습니까?

  29. 29

    더 큰 애플리케이션은 잠재적 (웹) 소켓 포트 충돌을 어떻게 처리합니까?

뜨겁다태그

보관