我有一个来自远程服务器的图像通过http url。我想对此做一些图像分析,所以我想在我的服务器端java代码中读取图像内容。此代码在tomcat服务器内运行。
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路径是 - “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”
以下是我在阅读图片时获得的例外
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 :(得分:0)
在浏览器中输入时,浏览器可以帮助您完成一些工作。要访问它,请先尝试对代码中的url进行编码(以逃避某些特定字符,如/,空白)。一个可选的API是,
URLEncoder.encode(为arg0)
答案 1 :(得分:0)
可能是Tomcat在URL中的空白处窒息。尝试将String urlPath编码为Tomcat可以理解的内容。
String encodedPathURL;
try
{
encodedPathURL = java.net.URLEncoder().encode(urlPath, "UTF-8");
}
catch(UnsupportedEncodingException exception)
{
//Exception handling here
}
并在调用ImageIO.read(新URL(encodedPathURL))时使用正确编码的String encodedPathURL。