Android保存MIME类型为GIF的MediaStore图像

问题描述 投票:0回答:1

虽然此代码成功创建了在手机图库中也存在的图像,但扩展名为'.jpg'而不是'.gif'。

    File gifFile; // gif file stored in Context.getFilesDir()

    final ContentValues contentValues = new ContentValues();
    contentValues.put(MediaStore.MediaColumns.DISPLAY_NAME, "Image" + System.currentTimeMillis());
    contentValues.put(MediaStore.MediaColumns.MIME_TYPE, "image/gif");

    // Create a new gif image using MediaStore
    final Uri gifContentUri = context.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues);
    // Open a writable stream pointing to the new file created by MediaStore
    OutputStream outputStream = context.getContentResolver().openOutputStream(gifContentUri, "w");
    // Copy the original file from the app private data folder to the file created by MediaStore
    IOUtils.copyFile(new FileInputStream(gifFile), outputStream);

输出文件由MediaStore在Pictures文件夹内创建。如果我手动将输出文件的扩展名更改为gif,则gif动画将在Android图库中播放。

我觉得我缺少一个小细节,无法正常工作

android gif android-gallery mediastore
1个回答
0
投票

已删除DISPLAY_NAME行。

添加contentValues.put(MediaStore.MediaColumns.DATA, "/storage/emulated/0/Pictures/Image." + System.currentTimeMillis() + ".gif");

如果子目录存在contentValues.put(MediaStore.MediaColumns.DATA, "/storage/emulated/0/Pictures/Mine/Image." + System.currentTimeMillis() + ".gif");,则转到图片目录的子目录。

© www.soinside.com 2019 - 2024. All rights reserved.