【发布时间】:2014-11-25 02:38:08
【问题描述】:
我查看了一堆其他关于糟糕的 Android 相机图像的堆栈答案,但它们似乎都来自那些抓住缩略图然后放大的人。
我的问题是即使保存在库中的图像质量也很差。它的颜色暗淡,像素化更多。
这是我将图像保存到库的回调。您能看出我保存时图像质量下降的任何原因吗?
这里是回调
@Override
public void onPictureTaken(byte[] data, Camera camera) {
File pictureFile = getOutputMediaFile(MEDIA_TYPE_IMAGE);
FileOutputStream fos = new FileOutputStream(pictureFile);
fos.write(data);
fos.close();
MediaScannerConnection.scanFile(getBaseContext(), new String[]{pictureFile.getPath()}, new String[]{"image/png"}, null);
这是我获得 outputMediaFile 的地方
private static File getOutputMediaFile(int type){
File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES), "PumpUp");
if (! mediaStorageDir.exists()){
if (! mediaStorageDir.mkdirs()){
Log.d("MyCameraApp", "failed to create directory");
return null;
}
}
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
File mediaFile;
if (type == MEDIA_TYPE_IMAGE){
mediaFile = new File(mediaStorageDir.getPath() + File.separator +
"IMG_"+ timeStamp + ".png");
Log.d(DEBUG_TAG,mediaStorageDir.getPath() + File.separator + "IMG_"+ timeStamp + ".png");
} else if(type == MEDIA_TYPE_VIDEO) {
mediaFile = new File(mediaStorageDir.getPath() + File.separator +
"VID_"+ timeStamp + ".mp4");
} else {
return null;
}
return mediaFile;
}
更新:
位图数据给我的宽度和高度是 320。你知道为什么它被缩小了吗?
更新 2:
此代码将打印出 320W 240H
private Camera.PictureCallback mPicture = new Camera.PictureCallback()
{
@Override
public void onPictureTaken(byte[] data, Camera camera) {
File pictureFile = getOutputMediaFile(MEDIA_TYPE_IMAGE);
Bitmap imageBitmap = BitmapFactory.decodeByteArray(data,0,data.length);
Log.d(DEBUG_TAG,imageBitmap.getWidth() + " h " + imageBitmap.getHeight());
}
为什么我的图片在得到回调之前就被缩小了?
【问题讨论】:
标签: java android android-camera