0
我有一個平鋪的圖像。我能夠讀取元數據,所以我知道瓷磚尺寸;但我不知道如何閱讀特定的瓷磚。我有以下問題:Tiff平鋪:如何閱讀特定的瓷磚?
假設我的口角由128×128瓦的,我怎麼能讀瓦定位在0,0(X,Y)?
我的tiff文件中有多少個圖塊?
我嘗試開發一個代碼來管理單個瓷磚,但我不知道如何識別特定的瓷磚位置。
IImageMetadata metadata = Sanselan.getMetadata(imageFile);
TiffDirectory tiffDirectory = ((TiffImageMetadata) metadata).findDirectory(TiffDirectoryConstants.DIRECTORY_TYPE_ROOT);
ByteSourceFile byteSource = new ByteSourceFile(imageFile);
ArrayList<?> elements = tiffDirectory.getTiffRawImageDataElements();
TiffImageData.Data data[] = new TiffImageData.Data[elements.size()];
for (int i = 0; i < elements.size(); i++) {
TiffDirectory.ImageDataElement element = (TiffDirectory.ImageDataElement) elements.get(i);
byte bytes[] = byteSource.getBlock(element.offset, element.length);
data[i] = new TiffImageData.Data(element.offset, element.length, bytes);
}
TiffField tileWidthField = tiffDirectory.findField(TiffTagConstants.TIFF_TAG_TILE_WIDTH);
if (null == tileWidthField)
throw new ImageReadException("Can't find tile width field.");
int tileWidth = tileWidthField.getIntValue();
TiffField tileLengthField = tiffDirectory.findField(TiffTagConstants.TIFF_TAG_TILE_LENGTH);
if (null == tileLengthField)
throw new ImageReadException("Can't find tile length field.");
int tileLength = tileLengthField.getIntValue();
TiffImageData.Tiles tile = new TiffImageData.Tiles(data, tileWidth, tileLength);
我使用Apache孵化器的Sanselan進行這些操作。
您是否檢查了[示例代碼和示例用法](http://incubator.apache.org/sanselan/site/sampleusage.html)? – trashgod 2011-06-12 19:51:34
是的,但它不報告瓷磚提取的例子,我不知道如何製作它。 – 2011-06-16 10:36:40