最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • react native基于react-native-image-crop-picker实现的自制图片选择

    正文概述 掘金(wjt)   2021-07-14   530

    参考

    • react-native-image-crop-picker 官方参考

    效果展示

    react native基于react-native-image-crop-picker实现的自制图片选择 react native基于react-native-image-crop-picker实现的自制图片选择

    前言

    • 使用这个react-native-image-crop-picker组件是因为这个组件功能更加强大。自带了图片剪切,IOS端视频压缩。
    • 当前的实现仅能选择一张图片,通过回调的方式返回图片的信息对象。
    • 返回结果实例:
    {height: 388,
    mime: "image/png",
    modificationDate: "1626168615000",
    path: "file:///data/user/0/com.idance_app/cache/react-native-image-crop-picker/333.png",
    size: 399743}
    

    源码

    /**
     * 选择图片、视频
     * 2021-7-13
     */
    
    import React, { useState } from 'react';
    import { View, TouchableOpacity, Image } from 'react-native';
    import { pxToDp } from '../../utils/stylesKits';
    import Icon from 'react-native-vector-icons/FontAwesome5';
    import ImagePicker from 'react-native-image-crop-picker';
    
    interface Props {
      callBackImage: any;
      style: any;
    }
    
    const Index = (props: Props) => {
      const [image, setImage] = useState({ path: '' });
      const [isShow, setIsShow] = useState(false);
    
      /**
       * 选择图片
       */
      const pickImage = () => {
        ImagePicker.openPicker({
          width: pxToDp(96),
          height: pxToDp(96),
          mediaType: 'photo'
        }).then((image) => {
          setImage(image);
          setIsShow(true);
          props.callBackImage(image);
        });
      };
    
      const pickView = () => {
        return (
          <TouchableOpacity
            style={{
              borderStyle: 'dashed',
              borderColor: 'black',
              width: pxToDp(96),
              height: pxToDp(96),
              borderWidth: 1,
              justifyContent: 'center',
              alignItems: 'center',
              borderRadius: 0.1
            }}
            onPress={pickImage}
          >
            <Icon name="plus" size={30} color="#E8E8E8" />
          </TouchableOpacity>
        );
      };
    
      /**
       * 缩略图展示
       * @returns
       */
      const thumbnailView = () => {
        return (
          <View>
            <Image
              style={{ width: pxToDp(96), height: pxToDp(96), borderRadius: 10 }}
              source={{ uri: image.path }}
            />
            <TouchableOpacity
              style={{ width: pxToDp(20), position: 'absolute', top: pxToDp(-10), left: pxToDp(86) }}
              onPress={() => {
                setIsShow(!isShow);
                props.callBackImage(null);
              }}
            >
              <Image
                style={{ width: pxToDp(20), height: pxToDp(20) }}
                source={require('@/res/images/x.png')}
              />
            </TouchableOpacity>
          </View>
        );
      };
    
      return (
        <View style={[props.style, { width: pxToDp(110), height: pxToDp(110) }]}>
          {isShow ? thumbnailView() : pickView()}
        </View>
      );
    };
    
    Index.defaultProps = {
      callBackImage: () => {},
      style: {}
    };
    
    export default Index;
    
    

    使用实例

    //回调的方法
      pickImage = (image: any) => {
        console.log(image);
      };
    
    //组件的使用
    <Pick
    callBackImage={this.pickImage}
    style={{ marginTop: pxToDp(20), marginLeft: pxToDp(15) }}
    />
    

    起源地下载网 » react native基于react-native-image-crop-picker实现的自制图片选择

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元