Changeset 3442


Ignore:
Timestamp:
12/04/07 11:33:49 (12 years ago)
Author:
melissa
Message:

Exporter now handles 48-bit RGB stacks correctly; doesn't display "Pixel type not supported" error when exporting 24-bit RGB stacks.

Location:
trunk/loci
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/loci/formats/TiffTools.java

    r3390 r3442  
    22812281    // create pixel output buffers 
    22822282    int stripSize = 8192; 
    2283     int rowsPerStrip = stripSize / (width * bytesPerPixel); 
     2283    int rowsPerStrip = stripSize / (width * bytesPerPixel * values.length); 
    22842284    int stripsPerImage = (height + rowsPerStrip - 1) / rowsPerStrip; 
    22852285    int[] bps = (int[]) getIFDValue(ifd, BITS_PER_SAMPLE, true, int[].class); 
     
    23832383    } 
    23842384    out.write(extraArray); 
     2385    out.flush(); 
    23852386    return numBytes; 
    23862387  } 
  • trunk/loci/plugins/Exporter.java

    r3258 r3442  
    100100      firstImage = ImageTools.makeBuffered(firstImage, proc.getColorModel()); 
    101101      int thisType = ImageTools.getPixelType((BufferedImage) firstImage); 
     102      if (proc instanceof ColorProcessor) { 
     103        thisType = FormatTools.UINT8; 
     104      } 
    102105 
    103106      boolean notSupportedType = !w.isSupportedType(thisType); 
     
    121124      // convert and save slices 
    122125 
     126      boolean fakeRGB = 
     127        imp instanceof CustomImage || imp instanceof CompositeImage; 
     128      int n = fakeRGB ? imp.getNChannels() : 1; 
     129 
    123130      ImageStack is = imp.getStack(); 
    124131      int size = is.getSize(); 
     
    127134      int end = doStack ? size : start + 1; 
    128135 
    129       for (int i=start; i<end; i++) { 
     136      for (int i=start; i<end; i+=n) { 
    130137        if (doStack) { 
    131138          IJ.showStatus("Saving plane " + (i + 1) + "/" + size); 
     
    140147 
    141148        if (proc instanceof ByteProcessor) { 
    142           byte[] b = (byte[]) proc.getPixels(); 
    143           img = ImageTools.makeImage(b, x, y); 
     149          if (fakeRGB) { 
     150            byte[][] b = new byte[n][]; 
     151            for (int j=0; j<n; j++) { 
     152              b[j] = (byte[]) is.getProcessor(i + j + 1).getPixels(); 
     153            } 
     154            img = ImageTools.makeImage(b, x, y); 
     155          } 
     156          else { 
     157            byte[] b = (byte[]) proc.getPixels(); 
     158            img = ImageTools.makeImage(b, x, y); 
     159          } 
    144160        } 
    145161        else if (proc instanceof ShortProcessor) { 
    146           short[] s = (short[]) proc.getPixels(); 
    147           img = ImageTools.makeImage(s, x, y); 
     162          if (fakeRGB) { 
     163            short[][] s = new short[n][]; 
     164            for (int j=0; j<n; j++) { 
     165              s[j] = (short[]) is.getProcessor(i + j + 1).getPixels(); 
     166            } 
     167            img = ImageTools.makeImage(s, x, y); 
     168          } 
     169          else { 
     170            short[] s = (short[]) proc.getPixels(); 
     171            img = ImageTools.makeImage(s, x, y); 
     172          } 
    148173        } 
    149174        else if (proc instanceof FloatProcessor) { 
    150           float[] b = (float[]) proc.getPixels(); 
    151           img = ImageTools.makeImage(b, x, y); 
     175          if (fakeRGB) { 
     176            float[][] f = new float[n][]; 
     177            for (int j=0; j<n; j++) { 
     178              f[j] = (float[]) is.getProcessor(i + j + 1).getPixels(); 
     179            } 
     180            img = ImageTools.makeImage(f, x, y); 
     181          } 
     182          else { 
     183            float[] b = (float[]) proc.getPixels(); 
     184            img = ImageTools.makeImage(b, x, y); 
     185          } 
    152186        } 
    153187        else if (proc instanceof ColorProcessor) { 
Note: See TracChangeset for help on using the changeset viewer.