Made getEstimatedMemoryUsage() do more of the right thing.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@2171 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// $Id: ImageUtil.java,v 1.25 2003/01/17 00:41:49 ray Exp $
|
// $Id: ImageUtil.java,v 1.26 2003/01/17 02:27:02 mdb Exp $
|
||||||
|
|
||||||
package com.threerings.media.image;
|
package com.threerings.media.image;
|
||||||
|
|
||||||
@@ -27,6 +27,7 @@ import java.awt.geom.Area;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
|
||||||
|
import com.samskivert.util.ArrayUtil;
|
||||||
import com.samskivert.util.StringUtil;
|
import com.samskivert.util.StringUtil;
|
||||||
|
|
||||||
import com.threerings.media.Log;
|
import com.threerings.media.Log;
|
||||||
@@ -530,24 +531,35 @@ public class ImageUtil
|
|||||||
* Returns the estimated memory usage in bytes for the specified
|
* Returns the estimated memory usage in bytes for the specified
|
||||||
* image.
|
* image.
|
||||||
*/
|
*/
|
||||||
public static long getEstimatedMemoryUsage (Image image)
|
public static long getEstimatedMemoryUsage (BufferedImage image)
|
||||||
{
|
{
|
||||||
int area = image.getWidth(null) * image.getHeight(null);
|
return getEstimatedMemoryUsage(image.getRaster());
|
||||||
// TODO: we assume an int per pixel for now, but should really
|
|
||||||
// study the sample model if it's a buffered image to do more
|
|
||||||
// intelligent estimation.
|
|
||||||
return (area * 4);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the estimated memory usage in bytes for all images in the
|
* Returns the estimated memory usage in bytes for the specified
|
||||||
* supplied iterator.
|
* raster.
|
||||||
|
*/
|
||||||
|
public static long getEstimatedMemoryUsage (Raster raster)
|
||||||
|
{
|
||||||
|
// we assume that the data buffer stores each element in a
|
||||||
|
// byte-rounded memory element; maybe the buffer is smarter about
|
||||||
|
// things than this, but we're better to err on the safe side
|
||||||
|
DataBuffer db = raster.getDataBuffer();
|
||||||
|
int bpe = (int)Math.ceil(
|
||||||
|
DataBuffer.getDataTypeSize(db.getDataType()) / 8f);
|
||||||
|
return bpe * db.getSize();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the estimated memory usage in bytes for all buffered images
|
||||||
|
* in the supplied iterator.
|
||||||
*/
|
*/
|
||||||
public static long getEstimatedMemoryUsage (Iterator iter)
|
public static long getEstimatedMemoryUsage (Iterator iter)
|
||||||
{
|
{
|
||||||
long size = 0;
|
long size = 0;
|
||||||
while (iter.hasNext()) {
|
while (iter.hasNext()) {
|
||||||
Image image = (Image)iter.next();
|
BufferedImage image = (BufferedImage)iter.next();
|
||||||
size += getEstimatedMemoryUsage(image);
|
size += getEstimatedMemoryUsage(image);
|
||||||
}
|
}
|
||||||
return size;
|
return size;
|
||||||
|
|||||||
Reference in New Issue
Block a user