gpt4 book ai didi

android - 提高使用安卓相机拍摄的照片的质量/清晰度/亮度

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:17:21 31 4
gpt4 key购买 nike

我有一个 android 应用程序,我在其中使用 android 相机拍照。经过一番努力后,我设法在我想要的地方和我想要的方式拍摄照片。最后的问题是质量图片。

当我的预览开始时,一切看起来都非常清晰和漂亮,但在拍摄照片并显示最终结果后,图像看起来一点也不好。

这是我的 surfaceChanged() 方法的样子——我在其中设置了一些参数:

public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
Log.e(TAG, "surfaceChanged");
if (mPreviewRunning) {
mCamera.stopPreview();
}

Camera.Parameters p = mCamera.getParameters();
List<Size> sizes = p.getSupportedPictureSizes();

System.out.println("Lista de parametrii este urmatoarea:"+sizes);
Size size = sizes.get(7);
p.setPictureSize(size.width,size.height);
mCamera.setParameters(p);
try {
mCamera.setPreviewDisplay(holder);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mCamera.startPreview();
mPreviewRunning = true;
}

谁能告诉我有什么方法可以提高我的照片质量。谢谢!

编辑:

在拍摄照片的 activity A 中,我使用 bundle 将图像发送到另一个 activity B 并将其存储在 SDCARD.这是我的做法:

Activity A:

 Camera.PictureCallback mPictureCallback = new Camera.PictureCallback(){
public void onPictureTaken(byte[] imageData, Camera c) {

if (imageData != null) {

Intent mIntent = new Intent();
Bundle b = new Bundle();
b.putByteArray("imageData", imageData);
Intent i = new Intent(mContext,ImageDisplayActivity.class);
i.putExtras(b);
startActivity(i);

setResult(FOTO_MODE, mIntent);
finish();

}
}
};

Activity B中:

Bundle extras = getIntent().getExtras();
BitmapFactory.Options options=new BitmapFactory.Options();
options.inSampleSize = 5;
byte[] imageData = extras.getByteArray("imageData");
Bitmap myImage = BitmapFactory.decodeByteArray(imageData , 0, imageData.length,options);

Matrix mat=new Matrix();
mat.postRotate(90);
bitmapResult = Bitmap.createBitmap(myImage, 0, 0, myImage.getWidth(),myImage.getHeight(), mat, true);

Canvas c = new Canvas(bitmapResult);
drawTextImage(bitmapResult);

我收到我将其放入位图中的图片,我旋转它并在方法 drawTextImage() 中在其上绘制文本。在这一切之后,我使用以下方法将 bitmapResult 存储在 sdcard 上:

  public static boolean StoreByteImage(Context mContext, Bitmap bitmap, int quality, String expName) {


FileOutputStream fileOutputStream = null;
String extStorageDirectory=Environment.getExternalStorageDirectory().toString();
File myNewFolder = new File(extStorageDirectory + newFolder);
if(myNewFolder.mkdirs())
{
myNewFolder.mkdir();
}
try {

//fileOutputStream = new FileOutputStream(sdImageMainDirectory.toString() +"/image.jpg");
fileOutputStream = new FileOutputStream(myNewFolder +"/"+expName+".jpg");
BufferedOutputStream bos = new BufferedOutputStream(fileOutputStream);

bitmap.compress(CompressFormat.JPEG, quality, bos);

bos.flush();
bos.close();

} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return true;
}

我通常这样调用它:StoreByteImage(getBaseContext(),bitmapResult,100,String.valueOf(value));谢谢

最佳答案

我遇到这个问题是因为自动对焦被禁用了。

尝试将此权限添加到您的 Android list 中:

 <uses-feature android:name="android.hardware.camera.autofocus" />

关于android - 提高使用安卓相机拍摄的照片的质量/清晰度/亮度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6913395/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com