Author: ruschein
Date: 2010-02-03 09:26:16 -0800 (Wed, 03 Feb 2010)
New Revision: 19162

Modified:
   
csplugins/trunk/util.compression/src/org/cytoscape/util/compression/BufferedImageCompressor.java
Log:
Greatly spead up BufferedImage re-creation.

Modified: 
csplugins/trunk/util.compression/src/org/cytoscape/util/compression/BufferedImageCompressor.java
===================================================================
--- 
csplugins/trunk/util.compression/src/org/cytoscape/util/compression/BufferedImageCompressor.java
    2010-02-03 12:48:37 UTC (rev 19161)
+++ 
csplugins/trunk/util.compression/src/org/cytoscape/util/compression/BufferedImageCompressor.java
    2010-02-03 17:26:16 UTC (rev 19162)
@@ -40,14 +40,7 @@
 
 public class BufferedImageCompressor {
        static public int[] compress(final BufferedImage image) throws 
IllegalStateException {
-               final int[] imageAsIntArray;
-               if (image.getRaster().getDataBuffer() instanceof DataBufferInt) 
{
-                       final DataBufferInt dataBuffer = 
(DataBufferInt)image.getRaster().getDataBuffer();
-                       imageAsIntArray = dataBuffer.getData();
-               }
-               else
-                       throw new IllegalStateException("image has an unknown 
internal representation!");
-
+               final int[] imageAsIntArray = getPixelArray(image);
                return (new RLEIntCompressor()).compress(imageAsIntArray);
        }
 
@@ -55,14 +48,17 @@
                final int[] imageAsIntArray = (new 
RLEIntCompressor()).expand(compressedImage);
 
                final BufferedImage image = new BufferedImage(width, height, 
BufferedImage.TYPE_INT_ARGB_PRE);
+               final int[] imageBuffer = getPixelArray(image);
+               System.arraycopy(imageAsIntArray, 0, imageBuffer, 0, 
imageAsIntArray.length);
+               return image;
+       }
+
+       static private int[] getPixelArray(final BufferedImage image) throws 
IllegalStateException {
                if (image.getRaster().getDataBuffer() instanceof DataBufferInt) 
{
                        final DataBufferInt dataBuffer = 
(DataBufferInt)image.getRaster().getDataBuffer();
-                       for (int i = 0; i < imageAsIntArray.length; ++i)
-                               dataBuffer.setElem(i, imageAsIntArray[i]);
+                       return dataBuffer.getData();
                }
                else
                        throw new IllegalStateException("image has an unknown 
internal representation!");
-
-               return image;
        }
 }

-- 
You received this message because you are subscribed to the Google Groups 
"cytoscape-cvs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/cytoscape-cvs?hl=en.

Reply via email to