diff --git a/components/formats-gpl/src/loci/formats/in/ScanrReader.java b/components/formats-gpl/src/loci/formats/in/ScanrReader.java index 64318040bc0..9a4b47982b8 100644 --- a/components/formats-gpl/src/loci/formats/in/ScanrReader.java +++ b/components/formats-gpl/src/loci/formats/in/ScanrReader.java @@ -611,8 +611,13 @@ else if (row1 > row2) { ms.bitsPerPixel = 12; } + // only populate Plane.The* if at least one kind of additional + // plane metadata is available + boolean populatePlanes = deltaT != null || exposures.size() >= getSizeC() || + fieldPositionX != null || fieldPositionY != null; + MetadataStore store = makeFilterMetadata(); - MetadataTools.populatePixels(store, this); + MetadataTools.populatePixels(store, this, populatePlanes); store.setPlateID(MetadataTools.createLSID("Plate", 0), 0); store.setPlateColumns(new PositiveInteger(wellColumns), 0); @@ -688,32 +693,35 @@ else if (row1 > row2) { store.setPixelsPhysicalSizeY(y, i); } + + int field = i % nFields; + int well = i / nFields; if (fieldPositionX != null && fieldPositionY != null) { - int field = i % nFields; - int well = i / nFields; final Length posX = fieldPositionX[field]; final Length posY = fieldPositionY[field]; - + store.setWellSamplePositionX(posX, 0, well, field); store.setWellSamplePositionY(posY, 0, well, field); - for (int c=0; c