OpenIMAJ 和图像读取异常
OpenIMAJ and Image Read Exception
我正在学习 OpenIMAJ 教程,当我 运行 以下代码时:
import java.io.IOException;
import java.net.URL;
import org.openimaj.image.ImageUtilities;
import org.openimaj.image.MBFImage;
import org.openimaj.image.colour.ColourSpace;
import org.openimaj.image.colour.RGBColour;
public class App {
public static void main( String[] args ) throws IOException {
MBFImage image = ImageUtilities.readMBF(new URL("http://dl.dropbox.com/u/8705593/sinaface.jpg"));
System.out.println(image.colourSpace);
}
}
我得到以下异常:
Exception in thread "main" java.io.IOException: org.apache.sanselan.ImageReadException: Can't parse this format.
at org.openimaj.image.ExtendedImageIO.read(ExtendedImageIO.java:189)
at org.openimaj.image.ExtendedImageIO.read(ExtendedImageIO.java:238)
at org.openimaj.image.ImageUtilities.readMBF(ImageUtilities.java:381)
at somefolder.App.main(App.java:37)
Caused by: org.apache.sanselan.ImageReadException: Can't parse this format.
at org.apache.sanselan.Sanselan.getImageParser(Sanselan.java:621)
at org.apache.sanselan.Sanselan.getBufferedImage(Sanselan.java:1260)
at org.apache.sanselan.Sanselan.getBufferedImage(Sanselan.java:1163)
at org.apache.sanselan.Sanselan.getBufferedImage(Sanselan.java:1136)
at org.openimaj.image.ExtendedImageIO.read(ExtendedImageIO.java:187)
... 3 more
有谁知道我该如何解决这个问题?谢谢
编辑:如果我下载图像并从文件系统读取它,它就可以工作。尽管如此,我还是想了解为什么从 URL 中读取不起作用。
Dropbox 不久前更改了那里的网址,现在使用 302 重定向到 https://dl.dropboxusercontent.com/u/8705593/sinaface.jpg。 Java 的 URL class 在您打开原始 URL 时不遵循重定向,最终导致此错误。
我们已经用新的 URLs 修复了开发版本的文档:http://openimaj.github.io/openimaj/tutorial/processing-your-first-image.html
(注意:如果您需要处理重定向,org.openimaj.io.HttpUtils
class 具有从 URL 打开 InputStream
的功能,同时处理许多在 Web 上找到的可能的重定向策略,包括 302 和基于元刷新的重定向)。
我正在学习 OpenIMAJ 教程,当我 运行 以下代码时:
import java.io.IOException;
import java.net.URL;
import org.openimaj.image.ImageUtilities;
import org.openimaj.image.MBFImage;
import org.openimaj.image.colour.ColourSpace;
import org.openimaj.image.colour.RGBColour;
public class App {
public static void main( String[] args ) throws IOException {
MBFImage image = ImageUtilities.readMBF(new URL("http://dl.dropbox.com/u/8705593/sinaface.jpg"));
System.out.println(image.colourSpace);
}
}
我得到以下异常:
Exception in thread "main" java.io.IOException: org.apache.sanselan.ImageReadException: Can't parse this format.
at org.openimaj.image.ExtendedImageIO.read(ExtendedImageIO.java:189)
at org.openimaj.image.ExtendedImageIO.read(ExtendedImageIO.java:238)
at org.openimaj.image.ImageUtilities.readMBF(ImageUtilities.java:381)
at somefolder.App.main(App.java:37)
Caused by: org.apache.sanselan.ImageReadException: Can't parse this format.
at org.apache.sanselan.Sanselan.getImageParser(Sanselan.java:621)
at org.apache.sanselan.Sanselan.getBufferedImage(Sanselan.java:1260)
at org.apache.sanselan.Sanselan.getBufferedImage(Sanselan.java:1163)
at org.apache.sanselan.Sanselan.getBufferedImage(Sanselan.java:1136)
at org.openimaj.image.ExtendedImageIO.read(ExtendedImageIO.java:187)
... 3 more
有谁知道我该如何解决这个问题?谢谢
编辑:如果我下载图像并从文件系统读取它,它就可以工作。尽管如此,我还是想了解为什么从 URL 中读取不起作用。
Dropbox 不久前更改了那里的网址,现在使用 302 重定向到 https://dl.dropboxusercontent.com/u/8705593/sinaface.jpg。 Java 的 URL class 在您打开原始 URL 时不遵循重定向,最终导致此错误。
我们已经用新的 URLs 修复了开发版本的文档:http://openimaj.github.io/openimaj/tutorial/processing-your-first-image.html
(注意:如果您需要处理重定向,org.openimaj.io.HttpUtils
class 具有从 URL 打开 InputStream
的功能,同时处理许多在 Web 上找到的可能的重定向策略,包括 302 和基于元刷新的重定向)。