将位图保存到SD卡,而不是在android中压缩它

Ram*_*tha 6 camera android store bitmap

我正在使用android内置摄像头拍照,然后将相同的图片附加到电子邮件,当我在1.6设备中测试此功能时,我能够在内置摄像头中命名要拍摄的图片,但在2.1中,图片是有一个名字,即由设备给出,

如何在2.1内置摄像头图像中提供用户定义的名称..

为了避免这个问题,我手动保存图像,但是当我尝试通过意图将图像作为位图返回,然后使用压缩方法将其保存到SD卡

此方法处理内置摄像头的结果

protected void onActivityResult(int requestCode, int resultCode, Intent data)
 {
  File file = new File(Environment.getExternalStorageDirectory()
    + "/test.png");
  switch (requestCode)
  {
  case PHOTO_ACTION:
   if (resultCode == RESULT_CANCELED)
   {
     addPhoto = false;
     Toast.makeText(this, "Canceled ", Toast.LENGTH_LONG).show();
     break;
   } else if (resultCode == RESULT_OK)
   {
    Bundle b = data.getExtras();
    Bitmap bm = (Bitmap) b.get("data");

    FileOutputStream out;
    try
     {

     out = new FileOutputStream(file);
     bm.compress(Bitmap.CompressFormat.JPEG, 100, out);
     out.flush();
     out.close();
     scanPhoto(file.toString());
     out = null;
     addPhoto = true;
     } catch (Exception e)
      {
       e.printStackTrace();
       addPhoto = false;
      }
Run Code Online (Sandbox Code Playgroud)

但是当我这样存储时,我得到了两张图片.一个系统名称和其他名称由我给出.但是用户定义的图像具有较低的分辨率,所以我的问题是如何在不压缩的情况下以更高的分辨率保存位图..请帮助....我

Ric*_*ick 6

如果您只想保存位图而不会丢失质量,请尝试使用CompressFormat.PNG而不是JPEG,我以前见过有人遇到过这个问题.尝试改变:

bm.compress(Bitmap.CompressFormat.JPEG, 100, out);
Run Code Online (Sandbox Code Playgroud)

有:

bm.compress(Bitmap.CompressFormat.PNG, 100, out);
Run Code Online (Sandbox Code Playgroud)

并看到它有所帮助.