从 SD 卡中获取图像,压缩,然后将其保存回 SD?

Posted

技术标签:

【中文标题】从 SD 卡中获取图像,压缩,然后将其保存回 SD?【英文标题】:Take image from SD card, compress it, and save it back to SD? 【发布时间】:2011-11-12 06:27:12 【问题描述】:

我正在尝试从相机捕获图像,如果它太大,我想压缩位图并将其发送回 SD 卡。我最初试图将图像直接拉到内存中,但显然根据我之前问题的这个答案,我可以做到这一点:android picture from camera being taken at a really small size

我怎样才能将该图像文件带回我的应用程序内存中?

【问题讨论】:

【参考方案1】:

您可以使用下面的代码重新缩放图像。

Bitmap yourBitmap;
Bitmap resized = Bitmap.createScaledBitmap(yourBitmap, newWidth, newHeight, true);

这会将您的图像压缩到更小的尺寸,您只需要根据您的要求提供新的高度和宽度。

【讨论】:

【参考方案2】:

单击按钮调用方法将图像保存到 SD 卡:

SaveImage(bitmap);

将图像保存到 SD 卡:

private void SaveImage(Bitmap finalBitmap) 

  String root = Environment.getExternalStorageDirectory().toString();
  File myDir = new File(root + "/demo_images");    
  myDir.mkdirs();
  Random generator = new Random();
  int n = 10000;
  n = generator.nextInt(n);
  fname = "Image-"+ n +".jpg";
  File file = new File (myDir, fname);
// Below code will give you full path in TextView

> txtPath1.setText(file.getAbsolutePath());

  if (file.exists ()) file.delete (); 
  try 
         FileOutputStream out = new FileOutputStream(file);
         finalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
         out.flush();
         out.close();

   catch (Exception e) 
         e.printStackTrace();
  

从 SD 卡获取图像:

Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
imageview.setImageDrawable(bitmap);

将图像存储到内存:

Saving and Reading Bitmaps/Images from Internal memory in Android

【讨论】:

【参考方案3】:

您从相机获取的图像已经压缩为 jpeg 格式。您永远不会从相机中获得原始图像。

【讨论】:

以上是关于从 SD 卡中获取图像,压缩,然后将其保存回 SD?的主要内容,如果未能解决你的问题,请参考以下文章

Android - 将图像从 URL 保存到 SD 卡

如何在存储 SD 卡之前裁剪捕获的图像? [复制]

防止其他应用访问我的应用存储在 sd 卡中的图像

将位图从 arraylist 保存到 SD 卡 - 保存的文件不可读

在 Android 中保存多个图像

如何从服务器下载文件并将其保存在 Android SD 卡中的特定文件夹中?