React Native--图片等比例缩放

在React Native项目中,为了实现图片限宽不限高的等比例缩放,需要利用getImageSize API来预加载图片并获取其宽高比。通过此方法,可以在显示图片前确定合适的宽度和高度,确保图片保持原始的宽高比。以下是关键代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在项目中逐渐使用RN进行前端开发,遇到一个需求,需要对图片进行限宽不限高的等宽高比缩放,

没有办法通过设置属性来处理,如果是宽高固定的容器,加载图片将resizeMode设置成contain,图片是按照宽和高中大的来做等比缩放,不符合项目要求,

因此需要先预加载图片来获取宽高比,下载后设置宽高来处理,getSize的Api如下:

static getSize(uri: string, success: (width: number, height: number) => void, failure: (error: any) => void) 

在显示图片前获取图片的宽高(以像素为单位)。如果图片地址不正确或下载失败,此方法也会失败。

要获取图片的尺寸,首先需要加载或下载图片(同时会被缓存起来)。这意味着理论上你可以用这个方法来预加载图片,虽然此方法并没有针对这一用法进行优化,而且将来可能会换一些实现方案使得并不需要完整下载图片即可获取尺寸。所以更好的预加载方案是使用下面那个专门的预加载方法。


下面贴一下主要代码:

constructor(props) {
    super(props);
    // 初始状态
    this.state = {
        width: defaultWidth,
        height: defaultHeight, 
    };
}

componentDidMount() {
    Image.getSize(this.props.image, (width, height) => {
        height = screenWidth * height / width; //按照屏幕宽度进行等比缩放
        this.setState({screenWidth, height});
    });
}

render(
return (
    <Image style={[styles.imageStyle, {width: this.state.width, height: this.state.height}]}
           source={{uri: this.props.image}}/>
)
)
 
 
 
 




评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值