Changeset 6707


Ignore:
Timestamp:
07/19/10 17:40:37 (9 years ago)
Author:
melissa
Message:

Fixed problems with exporting multi-channel data.

Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/4.2/components/loci-plugins/src/loci/plugins/out/Exporter.java

    r6674 r6707  
    388388      // convert and save slices 
    389389 
    390       Class<?> c = null; 
    391       try { 
    392         c = Class.forName("ij.CompositeImage"); 
    393       } 
    394       catch (ClassNotFoundException e) { } 
    395       boolean fakeRGB = imp.getClass().equals(c); 
    396       int n = fakeRGB ? imp.getNChannels() : 1; 
    397  
    398390      int size = imp.getImageStackSize(); 
    399391      ImageStack is = imp.getImageStack(); 
     
    408400 
    409401      int no = 0; 
    410       for (int i=start; i<end; i+=n) { 
     402      for (int i=start; i<end; i++) { 
    411403        if (doStack) { 
    412404          BF.status(false, "Saving plane " + (i + 1) + "/" + size); 
     
    424416 
    425417        if (proc instanceof ByteProcessor) { 
    426           if (fakeRGB) { 
    427             plane = new byte[n * x * y]; 
    428             for (int j=0; j<n; j++) { 
    429               byte[] b = (byte[]) is.getProcessor(i + j + 1).getPixels(); 
    430               System.arraycopy(b, 0, plane, j * x * y, b.length); 
    431             } 
    432           } 
    433           else { 
    434             plane = (byte[]) proc.getPixels(); 
    435           } 
     418          plane = (byte[]) proc.getPixels(); 
    436419        } 
    437420        else if (proc instanceof ShortProcessor) { 
    438           if (fakeRGB) { 
    439             plane = new byte[n * x * y * 2]; 
    440             for (int j=0; j<n; j++) { 
    441               byte[] b = DataTools.shortsToBytes( 
    442                 (short[]) is.getProcessor(i + j + 1).getPixels(), littleEndian); 
    443               System.arraycopy(b, 0, plane, j * x * y * 2, b.length); 
    444             } 
    445           } 
    446           else { 
    447             plane = DataTools.shortsToBytes( 
    448               (short[]) proc.getPixels(), littleEndian); 
    449           } 
     421          plane = DataTools.shortsToBytes( 
     422            (short[]) proc.getPixels(), littleEndian); 
    450423        } 
    451424        else if (proc instanceof FloatProcessor) { 
    452           if (fakeRGB) { 
    453             plane = new byte[n * x * y * 4]; 
    454             for (int j=0; j<n; j++) { 
    455               byte[] b = DataTools.floatsToBytes( 
    456                 (float[]) is.getProcessor(i + j + 1).getPixels(), littleEndian); 
    457               System.arraycopy(b, 0, plane, j * x * y * 4, b.length); 
    458             } 
    459           } 
    460           else { 
    461             plane = DataTools.floatsToBytes( 
    462               (float[]) proc.getPixels(), littleEndian); 
    463           } 
     425          plane = DataTools.floatsToBytes( 
     426            (float[]) proc.getPixels(), littleEndian); 
    464427        } 
    465428        else if (proc instanceof ColorProcessor) { 
  • trunk/components/loci-plugins/src/loci/plugins/out/Exporter.java

    r6674 r6707  
    388388      // convert and save slices 
    389389 
    390       Class<?> c = null; 
    391       try { 
    392         c = Class.forName("ij.CompositeImage"); 
    393       } 
    394       catch (ClassNotFoundException e) { } 
    395       boolean fakeRGB = imp.getClass().equals(c); 
    396       int n = fakeRGB ? imp.getNChannels() : 1; 
    397  
    398390      int size = imp.getImageStackSize(); 
    399391      ImageStack is = imp.getImageStack(); 
     
    408400 
    409401      int no = 0; 
    410       for (int i=start; i<end; i+=n) { 
     402      for (int i=start; i<end; i++) { 
    411403        if (doStack) { 
    412404          BF.status(false, "Saving plane " + (i + 1) + "/" + size); 
     
    424416 
    425417        if (proc instanceof ByteProcessor) { 
    426           if (fakeRGB) { 
    427             plane = new byte[n * x * y]; 
    428             for (int j=0; j<n; j++) { 
    429               byte[] b = (byte[]) is.getProcessor(i + j + 1).getPixels(); 
    430               System.arraycopy(b, 0, plane, j * x * y, b.length); 
    431             } 
    432           } 
    433           else { 
    434             plane = (byte[]) proc.getPixels(); 
    435           } 
     418          plane = (byte[]) proc.getPixels(); 
    436419        } 
    437420        else if (proc instanceof ShortProcessor) { 
    438           if (fakeRGB) { 
    439             plane = new byte[n * x * y * 2]; 
    440             for (int j=0; j<n; j++) { 
    441               byte[] b = DataTools.shortsToBytes( 
    442                 (short[]) is.getProcessor(i + j + 1).getPixels(), littleEndian); 
    443               System.arraycopy(b, 0, plane, j * x * y * 2, b.length); 
    444             } 
    445           } 
    446           else { 
    447             plane = DataTools.shortsToBytes( 
    448               (short[]) proc.getPixels(), littleEndian); 
    449           } 
     421          plane = DataTools.shortsToBytes( 
     422            (short[]) proc.getPixels(), littleEndian); 
    450423        } 
    451424        else if (proc instanceof FloatProcessor) { 
    452           if (fakeRGB) { 
    453             plane = new byte[n * x * y * 4]; 
    454             for (int j=0; j<n; j++) { 
    455               byte[] b = DataTools.floatsToBytes( 
    456                 (float[]) is.getProcessor(i + j + 1).getPixels(), littleEndian); 
    457               System.arraycopy(b, 0, plane, j * x * y * 4, b.length); 
    458             } 
    459           } 
    460           else { 
    461             plane = DataTools.floatsToBytes( 
    462               (float[]) proc.getPixels(), littleEndian); 
    463           } 
     425          plane = DataTools.floatsToBytes( 
     426            (float[]) proc.getPixels(), littleEndian); 
    464427        } 
    465428        else if (proc instanceof ColorProcessor) { 
Note: See TracChangeset for help on using the changeset viewer.