如何始终以新名称保存图像并删除前一个图像(Android)

android问题

我正在开发墙纸应用程序,其中我保存了具有相同名称的图像并将其发送到图库意图。

因为用相同的名称保存每个图像,所以我每次在图库意图中都遇到获取相同图像的问题。

发生的是新图像正在替换,但是我在图库意图中得到了较旧的图像。新图像替换旧图像,但画廊意图仍显示旧图像而不是新图像

所以我想每次用新名称保存图像,但也要删除较旧的保存图像。

注意:始终将图像另存为image ++,但也要删除先前的图像。

我的代码:

public void setAsWallpaper(Bitmap bitmap) {

        String dirname2 = "/Wallpaper/";

        File myDir2 = new File(Environment.getExternalStorageDirectory()
                .getPath() + dirname2);

        myDir2.mkdirs();

        String fname2 = "image" + ".jpg";
        File file2 = new File(myDir2, fname2);

        if (file2.exists())
            file2.delete();
        try {
            FileOutputStream out = new FileOutputStream(file2);
            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
            out.flush();
            out.close();
            success = true;

        } catch (Exception e) {
            Toast.makeText(_context, "failed", Toast.LENGTH_SHORT).show();
        }

        if (success) {

            Intent intent = new Intent();
             intent.setAction(Intent.ACTION_ATTACH_DATA);
             intent.setDataAndType(Uri.parse("file://"
             + "/sdcard/Wallpaper/image.jpg"), "image/*");
             intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
             _context.startActivity(intent);

        } else {

            Toast.makeText(_context, "failed", Toast.LENGTH_SHORT).show();

        }

    }
哈桑

如果您没有图片的原始名称,则可以将其作为参数发送给您的方法。然后,通过以下方法生成随机文件名:

public String random() {
    Random generator = new Random();
    StringBuilder randomStringBuilder = new StringBuilder();
    int randomLength = generator.nextInt(MAX_LENGTH);
    char tempChar;
    for (int i = 0; i < randomLength; i++){
        tempChar = (char) (generator.nextInt(96) + 32);
        randomStringBuilder.append(tempChar);
    }
    return randomStringBuilder.toString();
}

我通常循环将所有文件扔到我的文件夹中,然后删除其中的所有图像(始终是一张图像)。然后使用以下随机名称保存新的名称:

public void setAsWallpaper(Bitmap bitmap) {

    String dirname2 = "/Wallpaper/";

    File myDir2 = new File(Environment.getExternalStorageDirectory()
            .getPath() + dirname2);
    // delete folder and all files in it. then re-create it.
    if(myDir2.exists()) {
        String[] myFiles = myDir2.list();  
         for (int i=0; i<myFiles.length; i++) {  
             File myFile = new File(myDir2, myFiles[i]);   
             myFile.delete();  
         }
         myDir2.delete();
    }
    myDir2.mkdirs();

    String fname2 = random() + ".jpg";
    File file2 = new File(myDir2, fname2);

    if (file2.exists())
        file2.delete();
    try {
        FileOutputStream out = new FileOutputStream(file2);
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
        out.flush();
        out.close();
        success = true;

    } catch (Exception e) {
        Toast.makeText(_context, "failed", Toast.LENGTH_SHORT).show();
    }

    if (success) {

        Intent intent = new Intent();
         intent.setAction(Intent.ACTION_ATTACH_DATA);
         intent.setDataAndType(Uri.parse("file://"
         + "/sdcard/Wallpaper/" + fname2), "image/*");
         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         _context.startActivity(intent);

    } else {

        Toast.makeText(_context, "failed", Toast.LENGTH_SHORT).show();

    }

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何始终以新名称保存图像并删除前一个图像(Android)

来自分类Dev

如何通过使用新名称保存调整大小的版本来调整图像大小?

来自分类Dev

如何克隆图像但删除最后一个孩子?

来自分类Dev

Xcode / ios:让用户选择一个并显示图像后,如何获得图像名称?

来自分类Dev

Xcode / ios:让用户选择一个并显示图像后,如何获得图像名称?

来自分类Dev

下载图像会覆盖前一个图像

来自分类Dev

如何重命名从手机库中检索到的图像并将其保存为新名称

来自分类Dev

Laravel有时会在保存图像时生成一个带有图像名称的文件夹

来自分类Dev

当图像的边框改变大小时,如何创建一个始终位于图像正下方的按钮

来自分类Dev

如何将4张图像加入一个图像按钮(android)

来自分类Dev

从表中删除一个ManagedObject,但是如何删除附加的图像?

来自分类Dev

从另一个图像中删除一个重叠图像

来自分类Dev

如何从另一个给定的图像恢复图像

来自分类Dev

如何使用PNGQUANT执行批处理PNG压缩并将所有转换后的图像及其源名称保存到另一个文件夹?

来自分类Dev

PowerShell:旋转多个图像文件并将其保存到新名称的目录中

来自分类Dev

Android-将2位图保存到一个图像文件中

来自分类Dev

如何将fabricjs画布图像保存在另一个背景图像上?

来自分类Dev

如何创建另一个仅保存到图像的视口?

来自分类Dev

如何保存和还原用户看到的最后一个图像视图?

来自分类Dev

如何创建另一个仅保存到图像的视口?

来自分类Dev

Qt无法通过一个通道保存图像吗?

来自分类Dev

如何隐藏/删除上一个div的背景图像

来自分类Dev

在运行时删除图像,仅在两个图像上删除一个图像

来自分类Dev

删除图像文件后,创建一个0字节的文件,名称保持不变

来自分类Dev

删除另一个进程正在使用的图像

来自分类Dev

Android Studio ImageButton从一个图像更改为另一个图像

来自分类Dev

如何知道在Android中移动一个图像时两个图像是否相交?

来自分类Dev

如何在将文件移动到Java中的另一个目录时为文件指定新名称?

来自分类Dev

如何检查以数字命名的文件,如果存在,则使用下一个序号将其复制为新名称

Related 相关文章

  1. 1

    如何始终以新名称保存图像并删除前一个图像(Android)

  2. 2

    如何通过使用新名称保存调整大小的版本来调整图像大小?

  3. 3

    如何克隆图像但删除最后一个孩子?

  4. 4

    Xcode / ios:让用户选择一个并显示图像后,如何获得图像名称?

  5. 5

    Xcode / ios:让用户选择一个并显示图像后,如何获得图像名称?

  6. 6

    下载图像会覆盖前一个图像

  7. 7

    如何重命名从手机库中检索到的图像并将其保存为新名称

  8. 8

    Laravel有时会在保存图像时生成一个带有图像名称的文件夹

  9. 9

    当图像的边框改变大小时,如何创建一个始终位于图像正下方的按钮

  10. 10

    如何将4张图像加入一个图像按钮(android)

  11. 11

    从表中删除一个ManagedObject,但是如何删除附加的图像?

  12. 12

    从另一个图像中删除一个重叠图像

  13. 13

    如何从另一个给定的图像恢复图像

  14. 14

    如何使用PNGQUANT执行批处理PNG压缩并将所有转换后的图像及其源名称保存到另一个文件夹?

  15. 15

    PowerShell:旋转多个图像文件并将其保存到新名称的目录中

  16. 16

    Android-将2位图保存到一个图像文件中

  17. 17

    如何将fabricjs画布图像保存在另一个背景图像上?

  18. 18

    如何创建另一个仅保存到图像的视口?

  19. 19

    如何保存和还原用户看到的最后一个图像视图?

  20. 20

    如何创建另一个仅保存到图像的视口?

  21. 21

    Qt无法通过一个通道保存图像吗?

  22. 22

    如何隐藏/删除上一个div的背景图像

  23. 23

    在运行时删除图像,仅在两个图像上删除一个图像

  24. 24

    删除图像文件后,创建一个0字节的文件,名称保持不变

  25. 25

    删除另一个进程正在使用的图像

  26. 26

    Android Studio ImageButton从一个图像更改为另一个图像

  27. 27

    如何知道在Android中移动一个图像时两个图像是否相交?

  28. 28

    如何在将文件移动到Java中的另一个目录时为文件指定新名称?

  29. 29

    如何检查以数字命名的文件,如果存在,则使用下一个序号将其复制为新名称

热门标签

归档