Expose an API to get a bitmap's size in bytes.

Change-Id: I960c3b02b1ba8d3a8d92aaa98955a159e6f3a228
http://b/3184897
This commit is contained in:
Jesse Wilson
2011-02-16 15:46:12 -08:00
parent 260a13a95e
commit f7f9d9c39d
3 changed files with 25 additions and 5 deletions

View File

@@ -76371,6 +76371,17 @@
<parameter name="offsetXY" type="int[]">
</parameter>
</method>
<method name="getByteCount"
return="int"
abstract="false"
native="false"
synchronized="false"
static="false"
final="true"
deprecated="not deprecated"
visibility="public"
>
</method>
<method name="getConfig"
return="android.graphics.Bitmap.Config"
abstract="false"

View File

@@ -19,7 +19,6 @@ package android.graphics;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.DisplayMetrics;
import java.io.OutputStream;
import java.nio.Buffer;
import java.nio.ByteBuffer;
@@ -342,7 +341,7 @@ public final class Bitmap implements Parcelable {
}
long bufferSize = (long)elements << shift;
long pixelSize = (long)getRowBytes() * getHeight();
long pixelSize = getByteCount();
if (bufferSize < pixelSize) {
throw new RuntimeException("Buffer not large enough for pixels");
@@ -378,7 +377,7 @@ public final class Bitmap implements Parcelable {
}
long bufferBytes = (long)elements << shift;
long bitmapBytes = (long)getRowBytes() * getHeight();
long bitmapBytes = getByteCount();
if (bufferBytes < bitmapBytes) {
throw new RuntimeException("Buffer not large enough for pixels");
@@ -821,6 +820,14 @@ public final class Bitmap implements Parcelable {
return nativeRowBytes(mNativeBitmap);
}
/**
* Returns the number of bytes used to store this bitmap's pixels.
*/
public final int getByteCount() {
// int result permits bitmaps up to 46,340 x 46,340
return getRowBytes() * getHeight();
}
/**
* If the bitmap's internal config is in one of the public formats, return
* that config, otherwise return null.

View File

@@ -16,8 +16,6 @@
package android.graphics;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.test.suitebuilder.annotation.SmallTest;
import junit.framework.TestCase;
@@ -42,6 +40,10 @@ public class BitmapTest extends TestCase {
assertEquals("rowbytes", 200, bm2.getRowBytes());
assertEquals("rowbytes", 200, bm3.getRowBytes());
assertEquals("byteCount", 80000, bm1.getByteCount());
assertEquals("byteCount", 40000, bm2.getByteCount());
assertEquals("byteCount", 40000, bm3.getByteCount());
assertEquals("height", 200, bm1.getHeight());
assertEquals("height", 200, bm2.getHeight());
assertEquals("height", 200, bm3.getHeight());