我是Apache Commons Imaging(以及StackOverflow)的新手,我无法找到任何有用的资源来学习如何使用Imaging。有文档,但是缺乏示例/教程来解释正在发生的事情。
目标:我想使用Apache Commons Imaging制作一个TIFF图像查看器(显示器)。但我一直无法找到任何示例代码或接近它的东西,甚至是一个相关的教程。
代码中的问题: 1)我不确定下面的代码是否是我想要的任务。 2)我不知道如何使用main()方法测试'second'类。
我无法编写main()方法来测试以下类:
public class second {
public static BufferedImage imageReadExample(final File file)
throws ImageReadException, IOException {
final Map<String, Object> params = new HashMap<>();
// set optional parameters if you like
params.put(SanselanConstants.BUFFERED_IMAGE_FACTORY,
new ManagedImageBufferedImageFactory());
// params.put(ImagingConstants.PARAM_KEY_VERBOSE, Boolean.TRUE);
// read image
final BufferedImage image = Sanselan.getBufferedImage(file, params);
return image;
}
public static class ManagedImageBufferedImageFactory implements
IBufferedImageFactory {
@Override
public BufferedImage getColorBufferedImage(final int width, final int height,
final boolean hasAlpha) {
final GraphicsEnvironment ge = GraphicsEnvironment
.getLocalGraphicsEnvironment();
final GraphicsDevice gd = ge.getDefaultScreenDevice();
final GraphicsConfiguration gc = gd.getDefaultConfiguration();
return gc.createCompatibleImage(width, height,
Transparency.TRANSLUCENT);
}
@Override
public BufferedImage getGrayscaleBufferedImage(final int width, final int height,
final boolean hasAlpha) {
return getColorBufferedImage(width, height, hasAlpha);
}
}
}
我从here
的Apache网站(ImageReadExample)上提供的一个示例中获取了上述代码为了测试'第二'课程,我写了主要方法如下:
public class test {
public static void main(String args[]){
final File file = new File("someimage.TIF");
try {
final BufferedImage image = second.imageReadExample(file);
} catch (ImageReadException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
请注意,上面的主要方法只是一个天真的尝试,因为我不知道如何测试'第二'课程。 我想显示我在File构造函数中写入路径的TIFF图像。
当我运行此代码时,它会抛出此异常:
org.apache.sanselan.ImageReadException: Missing expected field: 277 (0x115: Samples Per Pixel):
at org.apache.sanselan.formats.tiff.TiffDirectory.findField(TiffDirectory.java:186)
at org.apache.sanselan.formats.tiff.TiffImageParser.getBufferedImage(TiffImageParser.java:463)
at org.apache.sanselan.formats.tiff.TiffDirectory.getTiffImage(TiffDirectory.java:163)
at org.apache.sanselan.formats.tiff.TiffImageParser.getBufferedImage(TiffImageParser.java:441)
at org.apache.sanselan.Sanselan.getBufferedImage(Sanselan.java:1264)
at org.apache.sanselan.Sanselan.getBufferedImage(Sanselan.java:1255)
at bisag.second.imageReadExample(second.java:29)
at bisag.test.main(test.java:22)
这里,'bisag'是我的包名,其中包含“test”和“second”类。
需要更正代码并帮助理解要执行的操作以及如何实现代码。提前谢谢!
P.S。 :由于我的PC中只有Sanselan(0.97孵化器)(而不是Imaging 1.0 SNAPSHOT),我根据Sanselan修改了代码。所以,代码基本相同。