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 和基于元刷新的重定向)。