【问题标题】:How can I export Layout or Views as images to visible gallery folder in Android?如何将布局或视图作为图像导出到 Android 中的可见图库文件夹?
【发布时间】:2016-02-07 17:38:21
【问题描述】:

在搜索“如何将布局视图保存为图像”之后,我找到了一些保存在内部和外部存储中的解决方案。但似乎创建的图像文件将保存在一些通常不可见的 data/data/... 文件夹中。实际上,我希望用户可以在图库中看到图像。我找到了一些类似下面的代码,但我什至无法检查图像是否已创建:

View content = findViewById(R.id.relativeLayout);
    String yourimagename = "MyImageFile";
    content.setDrawingCacheEnabled(true);
    Bitmap bitmap = content.getDrawingCache();
    File file = new File("/" + yourimagename + ".png");
    try {
        if (!file.exists()) {
            file.createNewFile();
        }
        FileOutputStream ostream = new FileOutputStream(file);
        bitmap.compress(Bitmap.CompressFormat.PNG, 10, ostream);
        ostream.close();
        content.invalidate();
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        content.setDrawingCacheEnabled(false);
    }

【问题讨论】:

    标签: android image file image-processing save


    【解决方案1】:

    但似乎创建的图像文件将保存在一些通常不可见的 data/data/... 文件夹中。

    文件将保存在程序员选择的保存位置。

    实际上,我希望用户可以在图库中看到该图像。我找到了一些类似下面的代码,但我什至无法检查图像是否已创建

    该代码不适用于任何版本的 Android,因为new File("/" + yourimagename + ".png") 不会为您提供可用的File,因为它指向一个您既不能读也不能写的地方。

    欢迎您将图片保存到internal storageexternal storage。由于您希望“图库”类型的应用程序获取此图像,因此最好选择外部存储,然后使用MediaScannerConnection 及其scanFile() 方法获取由MediaStore 索引的文件,因为图库应用程序会倾向于使用MediaStore 作为他们的图片来源。

    总的来说,我担心getDrawingCache() 会不可靠。你最好告诉你的根View 改为使用你自己的Bitmap-支持的Canvas

    【讨论】:

    • 非常感谢。我明白了。您是否可以将示例代码也发送给我?
    • @Mariox:我没有使用getDrawingCache() 的示例代码,如果你是这个意思的话。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    • 2012-04-07
    • 2021-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多