我尝试从loci工具中读取图像并将其从imagej保存到FileSaver 但是,我在运行它时遇到了这个错误
ImagePlus[] imps = BF.openImagePlus("path/to/my/file");
for (ImagePlus imp : imps)new FileSaver(imp).saveAsRaw("E:/test.raw");
当我运行代码时,它会显示
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [B
at ij.io.ImageWriter.write(ImageWriter.java:272)
at ij.io.FileSaver.saveAsRaw(FileSaver.java:494)
at Skripsi.dcmtoraw.main(dcmtoraw.java:16)
答案 0 :(得分:1)
这是一个错误,尽管说这个错误是在ImageJ 1.x中还是在Bio-Formats插件中并不容易。
In the ImageJ 1.x code,ImageWriter
假设(取消选中)当图像是堆栈时像素数组是Object[]
,而当它是单个图像平面时是byte[]
。然而,似乎Bio-Formats生成的ImagePlus
个对象的像素为Object[]
,即使对于单个平面也是如此。 (你的图像是一个平面吗?)
您可以使用Bio-Formats Exporter插件来解决此问题。
或者您可以使用ImageJ2 API,它将在引擎盖下使用SCIFIO:
/**
* Adapted from the
* <a href="https://github.com/imagej/imagej-tutorials">ImageJ Tutorials</a>
* {@code LoadAndDisplayDataset} tutorial.
*/
@Plugin(type = Command.class, menuPath = "Plugins>My Useful Command")
public class UsefulCommand implements Command {
@Parameter
private DatasetIOService datasetIOService;
@Parameter
private LogService log;
@Parameter
private File destination;
@Parameter
private Dataset image;
@Override
public void run() {
try {
image = datasetIOService.save(image, destination.getAbsolutePath());
}
catch (final IOException exc) {
log.error(exc);
}
}
}