2012-02-14 5 views
0

http url을 통해 원격 서버에서 오는 이미지가 있습니다. 이 부분에 대한 이미지 분석을하고 싶습니다. 따라서 서버 측 Java 코드에서 이미지 내용을 읽고 싶습니다. 이 코드는 Tomcat 서버에서 실행됩니다.서블릿 http 서버에서 이미지를 읽을 수 없습니다

public ImageTrimmer(String urlPath) { 
     imageSrc = urlPath; 
     try { 
      Image img = ImageIO.read(new URL(imageSrc)); // throws the exception 
      img.getRGB(0, 0); 
     } catch (IOException e) { 
      throw new RuntimeException("Problem reading image", e); 
     } 
    } 

이미지의 url은 이미지를 반환하는 유효한 url이 될 수 있습니다. 예제 URL 경로는 "http://build.ford.com/dig/Ford/E-Series 카고 밴/2012/BP3TT-FULL-EXT/Image [| Ford | E-Series 카고 밴 | 2012 | 1 | 1. | .E1E..YZ ... 89E.BS1.CB1.]/EXT/1/vehicle.png ". 여기

성공적으로 veryhelpful 될 이미지

java.io.IOException: Server returned HTTP response code: 505 for URL: http://build.ford.com/dig/Ford/E-Series Cargo Van/2012/BP3TT-FULL-EXT/Image[|Ford|E-Series Cargo Van|2012|1|1.|.E1E..YZ...89E.BS1.CB1.]/EXT/1/vehicle.png 

     at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1436) 
     at java.net.URL.openStream(URL.java:1010) 
     at javax.imageio.ImageIO.read(ImageIO.java:1367) 

이 이미지를 읽을 수있는 어떤 도움을 읽는 동안 내가 얻을 예외입니다.

+0

try 블록의 코드가 컴파일 가능한지 확인 했습니까? 내 일식은 당신 코드에 오류가 있습니다. 몇 가지 변경 사항이있는 컴파일 가능한 코드가 있고 이미지의 너비와 높이가 올바르게 표시됩니다. 원하는 경우 코드를 대답으로 붙여 넣을 수 있습니다. – Jasonw

답변

0

브라우저로 입력하는 경우 브라우저가 도움이됩니다. 그것에 접근하기 위해, 당신의 코드를 URL로 인코딩 해보십시오 (/와 같은 특정 문자를 이스케이프하기 위해). 하나의 옵션 API는

URLEncoder.encode (는 arg0)

+0

답장을 보내 주셔서 감사합니다. 여기에는 URL에 대한 인수가 없습니다. 이 URLEncoder는 도움이되지 않습니다. 위의 답글을 참조하십시오. 이 문제를 해결하는 데 도움주세요. – Ashok

+0

@Ashok, 여기에 encode API가 사용되는 것을 보지 못했습니다. michael이 지정한 코드를 따르십니까? ImageIO.read (새 URL (encodedPathURL)) URL을 인코딩 할 때 비 ASCII 문자 만 처리합니다. – Ivan

0

그것은 톰캣이 URL의 공백에 질식되어있을 수도있다. Tomcat이 이해할 수있는 문자열 urlPath를 인코딩 해보십시오.

String encodedPathURL; 
try 
{ 
    encodedPathURL = java.net.URLEncoder().encode(urlPath, "UTF-8"); 
} 
catch(UnsupportedEncodingException exception) 
{ 
    //Exception handling here 
} 

ImageIO.read (새 URL (encodedPathURL))를 호출 할 때 올바르게 인코딩 된 String encodedPathURL을 사용합니다.

+0

안녕하세요, 답장을 보내 주셔서 감사합니다. URLEncoder가 작동하지 않습니다. http : //를 인코딩합니다. 나는 다음과 같은 것을 시도했다. 심지어 이것이 작동하지 않는다. 이 문제를 해결할 수있는 올바른 방법을 제안 해 주시겠습니까? URI url = 새로운 URI ("http", host, path); img = ImageIO.read (url.toURL()); – Ashok

관련 문제