在Android应用中存储图片

时间:2016-11-30 20:06:07

标签: android bitmap

使用Intent从手机的相机应用程序中检索图像相对简单,其中该图像采用位图的形式。

我不知道这对于SO来说是否是一个合适的问题,但通常的做法是按原样保存整个位图吗?或者大多数人压缩/调整大小?

2 个答案:

答案 0 :(得分:1)

您倾向于使用Bitmap.compress保存它,它会为您压缩它。您可以随意使用无损格式的PNG,因此重新填充时不会出现质量损失。

当然,如果您正在使用意图从相机获取它,它通常已保存到文件系统。在这种情况下,该文件肯定已被压缩。

答案 1 :(得分:0)

这是一个简单的方法如下:

   private Boolean saveImage(Bitmap bitmap){

    ByteArrayOutputStream bao = null;
    File file = null, image = null;
    Boolean save = false;

    try{

        bao = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bao);

        image = new File(Environment.getExternalStorageDirectory() + "", "/yourSelectedFolder/");

        if (!image.exists()) {
            if (!image.mkdirs()) {
                Toast.makeText(context, "Error: Folder Not Created!\nPlease Try Again.", Toast.LENGTH_LONG).show();
            } else {
                Toast.makeText(context, "Folder Successfully Created!", Toast.LENGTH_LONG).show();
            }
        }


        file = new File(Environment.getExternalStorageDirectory().toString() + "/yourSelectedFolder/","filename" + ".jpeg");
        save = file.createNewFile();

        FileOutputStream fos = new FileOutputStream(file);
        fos.write(bao.toByteArray());
        fos.close();



        if (save){
            Toast.makeText(context, "Image Successfully Saved", Toast.LENGTH_LONG).show();
        } else {
            Toast.makeText(context, "Image Not Saved", Toast.LENGTH_LONG).show();
        }

    } catch (IOException e) {
        e.printStackTrace();
        Toast.makeText(context, "Error: "+e, Toast.LENGTH_LONG).show();
    }
    return save;
}