2012-03-09 2 views
3

SVG 파일을 생성하는 GWT 응용 프로그램이 있습니다.GWT를 사용하여 이미지 크기 확인

일부 URL의 이미지를 내 SVG에 포함하고 싶지만 올바른 가로 세로 비율을 유지하면서 크기를 조정하고 싶습니다.

GWT의 Image 클래스를 사용하여 이미지를로드하고 너비를 높이로 확인한 다음 일부 합계를 사용하여 내 SVG에 있어야하는 높이와 너비를 찾습니다.

<image href="http://some.image/URL.png" height="100" x="50" width="150" y="50"></image> 

내가 다음 작업을 수행 할 때입니다이 문제 :

Image image = new Image(sourceURL); 
int width = image.getWidth(); 
int height = image.getHeight(); 
.... 

처음 내가 특정 URL이 작업을 수행 다음과 같이

본인은 SVG에 이미지를 삽입 너비 또는 높이의 값은 0으로 되돌아갑니다. 루프에서 재 시도하면 문제가 해결되지 않는 것 같지만 응용 프로그램에 SVG를 다시 생성하도록 요청하면 작동합니다.

아이디어가 있으십니까?

+0

이미지가로드되지 않았 으면 너비와 높이를 알 수 없습니다. 아마도 "로드 됨"이벤트가 시작될 때까지 기다렸다가 물건을 처리해야합니다. –

+0

@GuillaumePolet 그 일을 시도했지만 해고당한 사건이 1 분 넘게 걸렸습니다. 하지만 10 초 내에 애플리케이션에 두 번 질문하면 두 번째 시도에서 즉시로드됩니다. – luketorjussen

+0

이미 그 메서드를 성공적으로 사용했기 때문에 코드에 뭔가 잘못되어 있어야하며로드하는 데 시간이 걸리지 않았습니다. SSCCE (http://sscce.org)에서 오류를 재현해볼 수 있습니까? 오류를 찾는 데 도움이 될 수 있습니다. 그렇지 않다면 우리는 그것을 살펴볼 수 있습니다. –

답변

4

죄송합니다. 답변이 아니지만 의견이 너무 짧아 일부 코드를 입력 할 수 없습니다.

다음을 시도해 보았는데 완벽하게 작동했습니다. 따라서 작은 코드로 문제를 격리하려고 시도해야합니다.

@Override 
    public void onModuleLoad() { 

    final Image image = new Image("https://www.google.com/images/srpr/logo3w.png"); 
    image.addLoadHandler(new LoadHandler() { 

     @Override 
     public void onLoad(LoadEvent event) { 
      Window.alert(image.getWidth() + " " + image.getHeight()); 
     } 
    }); 
    RootLayoutPanel.get().add(image); 
    } 
+0

이 샘플 코드를 보내 주셔서 감사합니다.이 코드로 프로젝트를 설정했지만 작동하지 않는 것 같습니다. 로드 핸들러가 다시 호출되지 않습니다. – luketorjussen

+0

방금 ​​웹 브라우저에서 새 탭의 이미지를 본 다음 샘플 코드를 다시 실행하면 효과가있었습니다 ... 그러나 질문이 남아 있는데 왜 처음 이미지를 찾지 못합니까? – luketorjussen

+0

이제 브라우저에 몇 가지 문제가 있습니까? 다른 것을 시도해 보셨습니까? FF로 사용하는 경우 일부 확장을 사용하지 않도록 설정하려고합니까? 웹 개발자 도구에 심각한 문제가 있음을 알고 있습니다. –

관련 문제