【问题标题】:Saving bitmap to SD card with out compressing it in android将位图保存到 SD 卡而不在 android 中对其进行压缩
【发布时间】:2011-04-24 19:57:13
【问题描述】:

我正在使用 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;
      }

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

【问题讨论】:

  • 我遇到了和你一样的问题。你有办法解决吗?如果是,您能否也将您的解决方案分享给我?谢谢!
  • 我也遇到了同样的问题,目前还没有找到解决办法..

标签: android bitmap camera store


【解决方案1】:

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

bm.compress(Bitmap.CompressFormat.JPEG, 100, out);

与:

bm.compress(Bitmap.CompressFormat.PNG, 100, out);

看到它有帮助。

【讨论】:

  • 即使在 JPEG 中设置为 100 % 后,它的清晰度和质量也会有所下降。当我使用 PNG 压缩时,它具有相同的清晰度。谢谢:-)
【解决方案2】:

除了上面的 Rick 回答之外,请确保您提供了一个指向相机意图的 URI,它可以保存完整的图像,否则它将在意图的数据参数中返回拇指图像。 所以它会是这样的:

Intent photoPickerIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
imgFile = new File("Cache directory","img.png"); //== where you want full size image
photoPickerIntent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(imgFile));
startActivityForResult(photoPickerIntent, PickPhoto);

这是我正在做的错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-04
    • 2011-11-12
    • 2012-10-21
    • 2015-04-23
    • 1970-01-01
    • 1970-01-01
    • 2011-12-12
    相关资源
    最近更新 更多