V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
xyxc0673
V2EX  ›  问与答

在 iOS 上, React Native 远程 GIF 图片保存到相册后变成了静态图片

  •  
  •   xyxc0673 · 2020-05-28 17:03:40 +08:00 · 1317 次点击
    这是一个创建于 1658 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近有个需求,需要把服务器上的 GIF 图片保存到系统相册中,但是我在尝试了几种方式后,发现保存后的 GIF 图片都变成了静态图片。

    我新建了一个新的 RN 项目来模拟这样的情况

    "dependencies": {
        "@react-native-community/cameraroll": "^1.7.2",
        "react": "16.11.0",
        "react-native": "0.62.2",
        "react-native-fs": "^2.16.6",
        "rn-fetch-blob": "^0.12.0"
      }
    

    尝试过以下几种方式

    const img = 'https://i.loli.net/2020/05/28/YKaCdO1pexuThbN.gif'
    CameraRoll.saveToCameraRoll(img);
    
    • react-native-fs 下载图片到临时目录,再保存到相册中
    const img = 'https://i.loli.net/2020/05/28/YKaCdO1pexuThbN.gif'
    const storeLocation = `${RNFS.TemporaryDirectoryPath}`;
    const pathName = `${new Date().getTime()}_babycam_moji.gif`;
    const downloadPath = `${storeLocation}${pathName}`;
    const ret = RNFS.downloadFile({
      fromUrl: img,
      toFile: downloadPath,
    });
    ret.promise.then((res) => {
      console.log('res', res);
      if (res && res.statusCode === 200) {
        const promise = CameraRoll.saveToCameraRoll(
          `file://${downloadPath}`,
        );
        promise.then(() => {});
      } else {
      }
    });
    
    • 使用 rn-fetch-blob 下载图片到临时目录,再保存到相册中
    RNFetchBlob.config({appendExt: 'gif', fileCache: true})
      .fetch('GET', img)
      .then((res) => {
      console.log('res', res.path());
      CameraRoll.saveToCameraRoll(res.path());
    });
    

    以上的方法我都尝试过,但保存后的 GIF 图片还是变成静态图片。

    3 条回复    2021-12-21 10:21:14 +08:00
    tanranran
        1
    tanranran  
       2020-05-28 17:42:16 +08:00
    试试用三方软件查看,看看能不能播放
    xyxc0673
        2
    xyxc0673  
    OP
       2020-05-28 17:55:14 +08:00
    @tanranran 我用 Airdrop 传到笔记本上,还是一样,静态的
    liutao1998
        3
    liutao1998  
       2021-12-21 10:21:14 +08:00
    现在有个 pr 修复了,但是还没 merge 过去
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5277 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 01:32 · PVG 09:32 · LAX 17:32 · JFK 20:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.