package com.android.camera.gallery;
import com.android.camera.BitmapManager;
import com.android.camera.Util;
import android.content.ContentResolver;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.ParcelFileDescriptor;
import android.util.Log;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.InputStream;
private static final String TAG = "UriImage";
private final Uri mUri;
private final IImageList mContainer;
private final ContentResolver mContentResolver;
UriImage(IImageList container, ContentResolver cr, Uri uri) {
mContainer = container;
mContentResolver = cr;
mUri = uri;
}
return 0;
}
return mUri.getPath();
}
try {
if (mUri.getScheme().equals("file")) {
return new java.io.FileInputStream(mUri.getPath());
} else {
return mContentResolver.openInputStream(mUri);
}
} catch (FileNotFoundException ex) {
return null;
}
}
private ParcelFileDescriptor
getPFD() {
try {
if (mUri.getScheme().equals("file")) {
String path = mUri.getPath();
return ParcelFileDescriptor.open(new File(path),
ParcelFileDescriptor.MODE_READ_ONLY);
} else {
return mContentResolver.openFileDescriptor(mUri, "r");
}
} catch (FileNotFoundException ex) {
return null;
}
}
public Bitmap
fullSizeBitmap(
int minSideLength,
int maxNumberOfPixels) {
return fullSizeBitmap(minSideLength, maxNumberOfPixels,
IImage.ROTATE_AS_NEEDED, IImage.NO_NATIVE);
}
public Bitmap
fullSizeBitmap(
int minSideLength,
int maxNumberOfPixels,
boolean rotateAsNeeded) {
return fullSizeBitmap(minSideLength, maxNumberOfPixels,
rotateAsNeeded, IImage.NO_NATIVE);
}
public Bitmap
fullSizeBitmap(
int minSideLength,
int maxNumberOfPixels,
boolean rotateAsNeeded, boolean useNative) {
try {
ParcelFileDescriptor pfdInput = getPFD();
Bitmap b = Util.makeBitmap(minSideLength, maxNumberOfPixels,
pfdInput, useNative);
return b;
} catch (Exception ex) {
Log.e(TAG, "got exception decoding bitmap ", ex);
return null;
}
}
return mUri;
}
return getInputStream();
}
return thumbBitmap(IImage.ROTATE_AS_NEEDED);
}
return mUri.toString();
}
return getTitle();
}
return fullSizeBitmap(THUMBNAIL_TARGET_SIZE, THUMBNAIL_MAX_NUM_PIXELS,
rotateAsNeeded);
}
ParcelFileDescriptor input = getPFD();
if (input == null) return null;
try {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapManager.instance().decodeFileDescriptor(
input.getFileDescriptor(), options);
return options;
} finally {
Util.closeSilently(input);
}
}
BitmapFactory.Options options = snifBitmapOptions();
return (options != null && options.outMimeType != null)
? options.outMimeType
: "";
}
BitmapFactory.Options options = snifBitmapOptions();
return (options != null) ? options.outHeight : 0;
}
BitmapFactory.Options options = snifBitmapOptions();
return (options != null) ? options.outWidth : 0;
}
return 0;
}
return mContainer;
}
return 0;
}
return true;
}
return false;
}
return false;
}
}