【发布时间】:2013-03-19 20:50:09
【问题描述】:
我正在尝试使用 Sanselan 将灰度图像写入 TIFF 文件。显然希望将数据保存为 8 位灰度文件,但不知何故我总是以 24 位彩色文件结束。
我搜索了一般文件格式,特别是 ExifTagConstants.EXIF_TAG_PIXEL_FORMAT,但找不到任何有用的东西。
我也考虑了颜色配置文件,但似乎没有灰度图像。但是他们都有古怪的名字——我可能只是忽略了正确的名字。
或者我必须使用不同的库吗?
这里是我使用的代码(没有业务逻辑和实验性的东西:
Test_Only_Sanselan:
try
{
final Map <String, Object> parameter = new HashMap <>();
parameter.put(org.apache.sanselan.SanselanConstants.PARAM_KEY_COMPRESSION,
org.apache.sanselan.formats.tiff.constants.TiffConstants.TIFF_COMPRESSION_UNCOMPRESSED);
final java.io.OutputStream output = new java.io.FileOutputStream("Test-1.tiff");
org.apache.sanselan.Sanselan.writeImage(image, output,
org.apache.sanselan.ImageFormat.IMAGE_FORMAT_TIFF, parameter);
output.close();
}
catch (final IOException exception)
{
LdfImage.log.info("! Could not create tiff image.", exception);
}
catch (final org.apache.sanselan.ImageWriteException exception)
{
LdfImage.log.info("! Could not create tiff image.", exception);
}
我想知道是否需要添加一个特殊参数。但是我还没有找到有用的参数。
以下是创建正确灰度图像的 Java 7 图像编写器的测试。但作为 PNG 而不是 TIFF:
Test_Only_Java_7:
try
{
final java.util.Iterator imageWriters = javax.imageio.ImageIO.getImageWritersByMIMEType ("image/png");
final javax.imageio.ImageWriter imageWriter = (javax.imageio.ImageWriter) imageWriters.next();
final java.io.File file = new java.io.File("Test-2.png");
final javax.imageio.stream.ImageOutputStream output = javax.imageio.ImageIO.createImageOutputStream(file);
imageWriter.setOutput(output);
imageWriter.write(image);
}
catch (final IOException exception)
{
LdfImage.log.info("! Could not create tiff image.", exception);
}
是否有适用于 imageio 的 TIFF 插件?
【问题讨论】:
-
您可能想要显示实际代码。
标签: java apache-commons tiff