A pure JavaScript written transformable image component, like PhotoView or ImageViewer, supports gestures like pan, pinch, double tab and fling, works with both iOS and Android.
Written in pure JS, this component should be one of the most easy to use component among all the zoomable, scrollable PhotoView alike views on react-native.
npm install --save shoutem/react-native-transformable-image
Quite same as the official Image, as below shows:
import Image from 'react-native-transformable-image';
...
render() {
return (
...
<Image
style={{width: width, height: height}}
source={{uri: 'https://raw.githubusercontent.com/yoaicom/resources/master/images/game_of_thrones_1.jpg'}}
//pixels={{width: 3607, height: 2400}}
/>
...
);
}
You can provide enableTransform
, enableScale
and enableTranslate
props to control corresponding features.
onTransformGestureReleased
andonViewTransformed
:
inherited from react-native-view-transformer
- If you are using react-native v0.27 and below, or if the image source is local (
source={require('...')}
), you should provide the pixels prop, likepixels={{width: 3607, height: 2400}}
(ask your API server to provide the pixels info for remote images). This prop is used to align the edge of the image content with the view's boundary and to determine the max scale. - By default, the official iOS Image component will downsample if the image is larger than the view size.
react-native-transformable-image
disables downsampling to keep more image details when zoomed in. This could cause memory issues if your image is too large.
If you are looking for an image gallery component, please refer to react-native-gallery, which is based on this component.