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

标签 android bitmap camera store

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

如何在 2.1 内置相机图像中给用户定义名称..

为了避免这个问题,我手动保存图像,但是当我尝试通过 intent 将图像作为位图取回,然后使用压缩方法将其保存到 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;
      }

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

最佳答案

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

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

与:

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

看看它是否有帮助。

关于android - 将位图保存到 SD 卡而不在 android 中压缩它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3923652/

相关文章:

android - 如何在android IconGenerator上将文本居中

ios - 有没有办法将 segue 操作延迟到用户通过他们的照片库选择图像或拍照之后? swift

android - 使用相机时如何打开/关闭手电筒?

Android:访问 Android 2.3 的前置摄像头

android - zipalign 不会改变 apk 文件

android - 如何在纵向模式和横向模式之间添加和删除布局元素?

java - 添加自定义 Lint 规则

java - float 组到字节数组,用于在 android 中的 Canvas 上显示位图

在 C 中创建 BMP 文件(位图)

android-我如何在线编译我的代码?