React Native开发鸿蒙Next---图片浏览与保存的问题交流

React Native开发鸿蒙Next—图片浏览与保存的问题交流

之前介绍过利用鸿蒙三方RN组件@react-native-camera-roll/camera-roll保存图片到相册。

React Native开发鸿蒙Next—react-native-cameraroll在ArkTS下的接入报错

悬空八只脚,公众号:悬空八只脚React Native开发鸿蒙Next—react-native-cameraroll在ArkTS下的接入报错

最近在使用过程中新遇到了一个小问题。应用的图片都是保存在阿里云OSS上的,在对图片做展示的时候,自然而然想到利用oss对图片做一些诸如缩放/圆底等处理。存储的时候,没细想就把oss图片路径带上处理参数传了进去。

const downloadPath = filePath + '?x-oss-process=image/resize,w_1000';

这导致了存储失败,可以看到如下报错

WARN  Possible Unhandled Promise Rejection (id: 1):
Object {
  "message": "bad file path   GetFd File already exists",
}

直接用oss地址filePath去保存就没有问题。

import {CameraRoll} from '@react-native-camera-roll/camera-roll';
CameraRoll.saveAsset(filePath).then(res => {  
console.log('res-----', res);
......

downloadPath直接在浏览器里也是可以正常下载的。造成这一问题的原因尚不明确,目前采取oss原始路径来保存图片的方式。

此外,在使用@react-native-oh-tpl/react-native-image-zoom-viewer进行图片浏览时,存在无法控制图片缩放样式问题(resizeMode/scaleType都不支持),对于一些尺寸较小的图片会居中显示导致较多留白,虽然可以通过诸如oss直接设置图片参数方式来处理,但不是很方便。react-native-image-zoom-viewer本身依赖了camera-roll,内部也是通过camera-roll来实现图片的保存。在用了oss参数设置图片尺寸后也有无法下载的问题。目前应用中还是只将react-native-image-zoom-viewer用于图片浏览,@react-native-camera-roll/camera-roll单独处理下载保存。

  import ImageViewer from '@react-native-oh-tpl/react-native-image-zoom-viewer';
  ......    
      <View style={styles.viewBg}>
        {fileList && fileList.length > 0 && (
          <ImageViewer
            scaleType={'cover'}
            resizeMode={'cover'}
            imageUrls={fileList} // 照片路径
            enableImageZoom={true} // 是否开启手势缩放
            index={currentIndex} // 初始显示第几张
            onChange={index => setIndex(index)} // 图片切换时触发
            onClick={() => {
              // 图片单击事件
              
            }}
            saveToLocalByLongPress={false}
          />
        )}
      </View>

在这里插入图片描述
在这里插入图片描述

以上是本周开发中遇到的两个小问题,欢迎交流。


不经常在线,有问题可在微信公众号或者掘金社区私信留言
更多内容可关注
我的公众号悬空八只脚
作者:悬空八只脚
链接:https://juejin.cn/post/7480761334360375308
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值