Android 安卓:Can';I don’我不知道照相机拍摄的照片的大小
正如Android的指南文档所说,我写了一个摄像头活动。 我保存了这张照片,然后我只想知道这张照片的宽度和高度。 但我无法用BitmapFactory.decodeStream获取它。 这是我的密码,有人能帮我吗Android 安卓:Can';I don’我不知道照相机拍摄的照片的大小,android,bitmap,camera,width,photo,Android,Bitmap,Camera,Width,Photo,正如Android的指南文档所说,我写了一个摄像头活动。 我保存了这张照片,然后我只想知道这张照片的宽度和高度。 但我无法用BitmapFactory.decodeStream获取它。 这是我的密码,有人能帮我吗 private PictureCallback mPictureCallback = new PictureCallback() { @Override public void onPictureTaken(byte[] data, Camera camera) {
private PictureCallback mPictureCallback = new PictureCallback() {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
//save the photo
File pictureFile = new File("/sdcard/test/test.jpg");
if(!pictureFile.exists()) {
try {
pictureFile.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
try {
FileOutputStream fos = new FileOutputStream(pictureFile);
fos.write(data);
fos.close();
} catch (FileNotFoundException e) {
Log.d(TAG, "File not found: " + e.getMessage());
} catch (IOException e) {
Log.d(TAG, "Error accessing file: " + e.getMessage());
}
//get the photo's width and height
{
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
InputStream is = null;
try {
is = new FileInputStream("/sdcard/test/test.jpg");
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
if(is != null) {
Bitmap bitmap = BitmapFactory.decodeStream(is, null, options);
int picWidth = bitmap.getWidth();
try {
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
CameraActivity.this.setResult(RESULT_OK);
CameraActivity.this.finish();
}
};
这个解决方案对你有效吗
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
//Returns null, sizes are in the options variable
BitmapFactory.decodeFile("/sdcard/image.png", options);
int width = options.outWidth;
int height = options.outHeight;
//If you want, the MIME type will also be decoded (if possible)
String type = options.outMimeType;
来源:如果在位图选项中使用
inJustDecodeBounds
设置为true,解码器将返回null(无位图),但out字段仍将设置,允许调用者查询位图,而无需为其像素分配内存 因此,如果您只需要高度-宽度值,而不需要位图本身,
请使用此标志。
为此,请使用选项
width=options.outWidth代码>
height=options.outHeight;
如果还需要位图的非缩放版本,请使用
options.inSampleSize=1
。
如果options.inSampleSize=x
其中x>1
,返回的图像将是原始大小的1/x,表示按x缩放。在“位图位图=BitmapFactory.decodeStream(is,null,options);”中,我得到了一个空的位图。谢谢,我的错。我完全忘了,也谢谢你。你们真是太好了。