【问题标题】:EPS reader javaEPS阅读器java
【发布时间】:2013-02-10 23:42:41
【问题描述】:

我下载了用于处理 EPS 文件的库 here

并编写了一些代码来解析EPS文件:

EPSImageReaderSPI spi = new EPSImageReaderSPI();
EPSImageReader eps = new EPSImageReader(spi);

File file = new File("file.eps");
InputStream in = null;
try {
    in = new FileInputStream(file);
} catch (FileNotFoundException e) {
    e.printStackTrace();  
}
ImageInputStream iis = null;
iis = ImageIO.createImageInputStream(in);
eps.setInput(iis);
eps.getHeight(0);

我的代码崩溃并说:

线程“主”javax.imageio.IIOException 中的异常:不支持数据类型 -1 在 epsLib.EPSImageReader.readHeader(EPSImageReader.java:307) 在 epsLib.EPSImageReader.getHeight(EPSImageReader.java:148) 在 Main.main(Main.java:39) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)

你能帮帮我吗?

更新:

当我尝试安装 jmagick,但是当我运行命令时:

./configure --with-java-home=/System/Library/Frameworks/JavaVM.framework/Versions/Current --with-magick-home=/usr/local/Cellar/imagemagick/6.8.0-10 --with-magick-inc-dir=/usr/local/Cellar/imagemagick/6.8.0-10/include

得到这个错误:

正在检查 MagickCore-config... /usr/local/Cellar/imagemagick/6.8.0-10/bin/MagickCore-config /usr/local/Cellar/imagemagick/6.8.0-10/bin/MagickCore-config:第 50 行:pkg-config:找不到命令 /usr/local/Cellar/imagemagick/6.8.0-10/bin/MagickCore-config:第 53 行:pkg-config:找不到命令 /usr/local/Cellar/imagemagick/6.8.0-10/bin/MagickCore-config:第 47 行:pkg-config:找不到命令 检查 magick/api.h 的可用性...否 检查 magick/api.h 的存在...否 检查magick/api.h ...不 配置:错误:找不到 ImageMagick 头文件


更新:

我修好了!只需将命令更改为:

./configure --with-java-home=/System/Library/Frameworks/JavaVM.framework/Versions/Current --with-magick-home=/usr/local/Cellar/imagemagick/6.8.0-10 --with-magick-inc-dir=/usr/local/Cellar/imagemagick/6.8.0-10/include/ImageMagick/

然后我尝试了:

make all

并得到错误:

make1: 进入目录/Users/olegsuzaev/jmagick-6.4.0/src'make[2]: Entering directory/Users/olegsuzaev/jmagick-6.4.0/src/magick'../../Make.rules:175: * 缺少分隔符。停止。 make[2]: 离开目录/Users/olegsuzaev/jmagick-6.4.0/src/magick' make[1]: *** [dir_target] Error 2 make[1]: Leaving directory/Users/olegsuzaev/jmagick-6.4.0/src' make: * [dir_target] 错误 2

有人可以帮忙解决新的错误吗?

【问题讨论】:

  • 很高兴你拿走了我的 EPS 阅读器,不幸的是它目前不支持矢量 EPS 文件。您的 EPS 是否包含矢量数据?
  • 嗨!是的,它是包含的。遗憾的是该库不支持矢量 EPS 文件。你知道其他可以帮助我的图书馆吗?非常感谢)
  • 对不起,我不知道任何 Java 库,我会像 Amorgos 所说的那样,JMagick。我开发这个库正是因为没有人。目前我不需要矢量部分。
  • 在你的库中添加矢量部分难吗?
  • 当然,它本身就是一个项目。这里有一些关于 EPS 文件如何工作的信息:fileformat.info/format/eps/egff.htm。要解析矢量,您需要阅读和解释所有矢量命令。示例: /s /stroke ld /f /fill ld /m /moveto ld /l /lineto ld /c /curveto ld /rgb

标签: java jmagick


【解决方案1】:

我建议您联系此代码的作者或自己查看代码以找出发生此异常的原因。

作为替代方案,似乎有许多可用于 Java 的 EPS API。以下是一些:

另外,ImageMagick(一个 C 库)支持 EPS 来读取 EPS,并且有一个名为 JMagick 的 ImageMagick 的 JNI 包装器允许从 Java 访问 ImageMagick。

【讨论】:

  • 每一个都不允许读取EPS文件的数据,它们都是为了创建EPS文件而设计的(
  • 我发现 Ghostscript 可以很好地处理 EPS 文件,但我再次尝试找到一个支持所有使用 java 的操作的 java 包装器。 Ghost4j 是我正在探索的一个。有什么对你有用的建议吗?
猜你喜欢
  • 1970-01-01
  • 2021-01-16
  • 2014-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-29
  • 1970-01-01
相关资源
最近更新 更多