Merge "Add ImageDecoder.ImageInfo.getMimeType"
This commit is contained in:
committed by
Android (Google) Code Review
commit
2f28dd71ec
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
|
||||
#include "Bitmap.h"
|
||||
#include "BitmapFactory.h"
|
||||
#include "ByteBufferStreamAdaptor.h"
|
||||
#include "CreateJavaOutputStreamAdaptor.h"
|
||||
#include "GraphicsJNI.h"
|
||||
@@ -500,6 +501,11 @@ static void ImageDecoder_nClose(JNIEnv* /*env*/, jobject /*clazz*/, jlong native
|
||||
delete reinterpret_cast<ImageDecoder*>(nativePtr);
|
||||
}
|
||||
|
||||
static jstring ImageDecoder_nGetMimeType(JNIEnv* env, jobject /*clazz*/, jlong nativePtr) {
|
||||
auto* decoder = reinterpret_cast<ImageDecoder*>(nativePtr);
|
||||
return encodedFormatToString(env, decoder->mCodec->getEncodedFormat());
|
||||
}
|
||||
|
||||
static const JNINativeMethod gImageDecoderMethods[] = {
|
||||
{ "nCreate", "(J)Landroid/graphics/ImageDecoder;", (void*) ImageDecoder_nCreateAsset },
|
||||
{ "nCreate", "(Ljava/nio/ByteBuffer;II)Landroid/graphics/ImageDecoder;", (void*) ImageDecoder_nCreateByteBuffer },
|
||||
@@ -511,6 +517,7 @@ static const JNINativeMethod gImageDecoderMethods[] = {
|
||||
{ "nGetSampledSize","(JI)Landroid/graphics/Point;", (void*) ImageDecoder_nGetSampledSize },
|
||||
{ "nGetPadding", "(JLandroid/graphics/Rect;)V", (void*) ImageDecoder_nGetPadding },
|
||||
{ "nClose", "(J)V", (void*) ImageDecoder_nClose},
|
||||
{ "nGetMimeType", "(J)Ljava/lang/String;", (void*) ImageDecoder_nGetMimeType },
|
||||
};
|
||||
|
||||
int register_android_graphics_ImageDecoder(JNIEnv* env) {
|
||||
|
||||
@@ -210,13 +210,31 @@ public final class ImageDecoder implements AutoCloseable {
|
||||
* Contains information about the encoded image.
|
||||
*/
|
||||
public static class ImageInfo {
|
||||
/**
|
||||
* Width of the image, without scaling or cropping.
|
||||
*/
|
||||
public final int width;
|
||||
public final int height;
|
||||
// TODO?: Add more info? mimetype, ninepatch etc?
|
||||
|
||||
ImageInfo(int width, int height) {
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
/**
|
||||
* Height of the image, without scaling or cropping.
|
||||
*/
|
||||
public final int height;
|
||||
|
||||
/* @hide */
|
||||
ImageDecoder decoder;
|
||||
|
||||
/* @hide */
|
||||
ImageInfo(ImageDecoder decoder) {
|
||||
this.width = decoder.mWidth;
|
||||
this.height = decoder.mHeight;
|
||||
this.decoder = decoder;
|
||||
}
|
||||
|
||||
/**
|
||||
* The mimeType of the image, if known.
|
||||
*/
|
||||
public String getMimeType() {
|
||||
return decoder.getMimeType();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -671,8 +689,12 @@ public final class ImageDecoder implements AutoCloseable {
|
||||
@Nullable OnHeaderDecodedListener listener) throws IOException {
|
||||
try (ImageDecoder decoder = src.createImageDecoder()) {
|
||||
if (listener != null) {
|
||||
ImageInfo info = new ImageInfo(decoder.mWidth, decoder.mHeight);
|
||||
listener.onHeaderDecoded(info, decoder);
|
||||
ImageInfo info = new ImageInfo(decoder);
|
||||
try {
|
||||
listener.onHeaderDecoded(info, decoder);
|
||||
} finally {
|
||||
info.decoder = null;
|
||||
}
|
||||
}
|
||||
|
||||
decoder.checkState();
|
||||
@@ -753,8 +775,12 @@ public final class ImageDecoder implements AutoCloseable {
|
||||
@Nullable OnHeaderDecodedListener listener) throws IOException {
|
||||
try (ImageDecoder decoder = src.createImageDecoder()) {
|
||||
if (listener != null) {
|
||||
ImageInfo info = new ImageInfo(decoder.mWidth, decoder.mHeight);
|
||||
listener.onHeaderDecoded(info, decoder);
|
||||
ImageInfo info = new ImageInfo(decoder);
|
||||
try {
|
||||
listener.onHeaderDecoded(info, decoder);
|
||||
} finally {
|
||||
info.decoder = null;
|
||||
}
|
||||
}
|
||||
|
||||
decoder.checkState();
|
||||
@@ -773,6 +799,10 @@ public final class ImageDecoder implements AutoCloseable {
|
||||
}
|
||||
}
|
||||
|
||||
private String getMimeType() {
|
||||
return nGetMimeType(mNativePtr);
|
||||
}
|
||||
|
||||
/**
|
||||
* See {@link #decodeBitmap(Source, OnHeaderDecodedListener)}.
|
||||
*/
|
||||
@@ -802,4 +832,5 @@ public final class ImageDecoder implements AutoCloseable {
|
||||
int sampleSize);
|
||||
private static native void nGetPadding(long nativePtr, Rect outRect);
|
||||
private static native void nClose(long nativePtr);
|
||||
private static native String nGetMimeType(long nativePtr);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user