Android在保存SD卡之前拍照并调整大小

时间:2013-04-17 12:32:39

标签: android android-camera

我希望我的代码在保存之前调整图片大小,但我在Google上找不到任何相关内容。 你能帮帮我吗?

这是代码(来自Android doc):

private void galleryAddPic() {
    Intent mediaScanIntent = new Intent("android.intent.action.MEDIA_SCANNER_SCAN_FILE");
    File f = new File(mCurrentPhotoPath);

    picturePathForUpload = mCurrentPhotoPath;

    Uri contentUri = Uri.fromFile(f);
    mediaScanIntent.setData(contentUri);
    this.sendBroadcast(mediaScanIntent);
}

之后,我必须将其上传到服务器。

非常感谢。

6 个答案:

答案 0 :(得分:28)

您可以按照代码

保存位图图像
Bitmap photo = (Bitmap) "your Bitmap image";
photo = Bitmap.createScaledBitmap(photo, 100, 100, false);
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
photo.compress(Bitmap.CompressFormat.JPEG, 40, bytes);

File f = new File(Environment.getExternalStorageDirectory()
        + File.separator + "Imagename.jpg");
f.createNewFile();
FileOutputStream fo = new FileOutputStream(f);
fo.write(bytes.toByteArray());
fo.close();

答案 1 :(得分:5)

在阅读了其他答案而没有找到我想要的内容后,我的方法是获取适当缩放的位图。这是对Prabu答案的改编。

确保您的照片缩放的方式不会影响照片的尺寸:

{{1}}

这是我的GitHub要点的相应链接:https://gist.github.com/Lwdthe1/2d1cd0a12f30c18db698

答案 2 :(得分:4)

首先将图片转换为位图,然后使用以下代码:

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

答案 3 :(得分:1)

See this 这将是完整的帮助。一般情况下,如果您使用意图通过相机拍摄图像,您将获得uri图像作为结果,您将其视为缩小图像并将其存储在同一位置

答案 4 :(得分:0)

如果您想拍摄完整尺寸的图像,那么您别无选择,只能将其保存到SD卡中,然后更改图像的大小。

如果缩略图图像足够,则无需将其保存到SD卡,您可以从返回的意图的附加内容中提取它。

您可以查看我为使用内置摄像头构建图像的两种方法编写的本指南Activity

Guide: Android: Use Camera Activity for Thumbnail and Full Size Image

答案 5 :(得分:0)

BitmapFactory.Options optionsSignature = new BitmapFactory.Options();
final Bitmap bitmapSignature = BitmapFactory.decodeFile(
fileUriSignature.getPath(), optionsSignature);
Bitmap resizedSignature = Bitmap.createScaledBitmap(
                bitmapSignature, 256, 128, true);
signature.setImageBitmap(resizedSignature);