|
41 | 41 | import java.io.IOException; |
42 | 42 | import java.util.Iterator; |
43 | 43 | import java.util.HashMap; |
| 44 | +import java.util.List; |
44 | 45 | import java.util.TreeMap; |
45 | 46 | import java.util.SortedMap; |
46 | 47 |
|
|
86 | 87 | import loci.formats.services.OMEXMLServiceImpl; |
87 | 88 |
|
88 | 89 | import ome.xml.meta.OMEXMLMetadataRoot; |
| 90 | +import ome.xml.model.Channel; |
89 | 91 | import ome.xml.model.Image; |
90 | 92 | import ome.xml.model.Pixels; |
91 | 93 | import ome.xml.model.enums.PixelType; |
@@ -599,11 +601,22 @@ public boolean testConvert(IFormatWriter writer, String[] args) |
599 | 601 | String xml = service.getOMEXML(service.asRetrieve(store)); |
600 | 602 | OMEXMLMetadataRoot root = (OMEXMLMetadataRoot) store.getRoot(); |
601 | 603 | IMetadata meta = service.createOMEXMLMetadata(xml); |
| 604 | + OMEXMLMetadataRoot newRoot = (OMEXMLMetadataRoot) meta.getRoot(); |
602 | 605 | if (series >= 0) { |
603 | | - Image exportImage = new Image(root.getImage(series)); |
604 | | - Pixels exportPixels = new Pixels(root.getImage(series).getPixels()); |
| 606 | + Image exportImage = newRoot.getImage(series); |
| 607 | + Pixels exportPixels = newRoot.getImage(series).getPixels(); |
| 608 | + |
| 609 | + if (channel >= 0) { |
| 610 | + List<Channel> channels = exportPixels.copyChannelList(); |
| 611 | + |
| 612 | + for (int c=0; c<channels.size(); c++) { |
| 613 | + if (c != channel) { |
| 614 | + exportPixels.removeChannel(channels.get(c)); |
| 615 | + } |
| 616 | + } |
| 617 | + } |
| 618 | + |
605 | 619 | exportImage.setPixels(exportPixels); |
606 | | - OMEXMLMetadataRoot newRoot = (OMEXMLMetadataRoot) meta.getRoot(); |
607 | 620 | while (newRoot.sizeOfImageList() > 0) { |
608 | 621 | newRoot.removeImage(newRoot.getImage(0)); |
609 | 622 | } |
@@ -647,6 +660,17 @@ public boolean testConvert(IFormatWriter writer, String[] args) |
647 | 660 | store.setPixelsType(PixelType.UINT8, i); |
648 | 661 | } |
649 | 662 |
|
| 663 | + if (channel >= 0) { |
| 664 | + Pixels exportPixels = newRoot.getImage(i).getPixels(); |
| 665 | + List<Channel> channels = exportPixels.copyChannelList(); |
| 666 | + |
| 667 | + for (int c=0; c<channels.size(); c++) { |
| 668 | + if (c != channel) { |
| 669 | + exportPixels.removeChannel(channels.get(c)); |
| 670 | + } |
| 671 | + } |
| 672 | + } |
| 673 | + |
650 | 674 | if (channel >= 0) { |
651 | 675 | meta.setPixelsSizeC(new PositiveInteger(1), i); |
652 | 676 | } |
|
0 commit comments