Gathering detailed insights and metrics for react-native-photo-manipulator
Gathering detailed insights and metrics for react-native-photo-manipulator
Gathering detailed insights and metrics for react-native-photo-manipulator
Gathering detailed insights and metrics for react-native-photo-manipulator
@xtayaitak/react-native-photo-manipulator
React Native Image Processing API to edit photo programmatically for Android and iOS.
@jarred/react-native-photo-manipulator
Image processing library to edit photo programmatically in React Native
@rn-common/image-picker
This utility provides a convenient way to pick and resize images using the camera or photo library in a React Native application. It leverages `expo-image-picker` for image selection and `expo-image-manipulator` for resizing images, with additional UI sup
React Native Image Processing API to edit photo programmatically for Android and iOS. It features print text, overlay on another image (add watermark), resize, crop, flip, rotate and optimize image size then convert file format to jpeg or png
npm install react-native-photo-manipulator
Typescript
Module System
Node Version
NPM Version
TypeScript (53.03%)
Objective-C (15.53%)
Kotlin (14.94%)
Java (4.33%)
Swift (3.8%)
Objective-C++ (3.64%)
JavaScript (2.45%)
Ruby (2.18%)
C (0.1%)
Total Downloads
0
Last Day
0
Last Week
0
Last Month
0
Last Year
0
MIT License
370 Stars
666 Commits
38 Forks
4 Watchers
12 Branches
3 Contributors
Updated on Jun 15, 2025
Latest Version
1.9.2
Package Id
react-native-photo-manipulator@1.9.2
Unpacked Size
140.20 kB
Size
27.21 kB
File Count
81
NPM Version
10.8.2
Node Version
20.18.2
Published on
Jan 30, 2025
Cumulative downloads
Total Downloads
Last Day
0%
NaN
Compared to previous day
Last Week
0%
NaN
Compared to previous week
Last Month
0%
NaN
Compared to previous month
Last Year
0%
NaN
Compared to previous year
1
2
21
React Native Image Processing API to edit photo programmatically for Android and iOS.
Framework | Android | iOS |
---|---|---|
React Native | ✔️ | ✔️ |
Expo with development build | ✔️ | ✔️ |
Expo Go | ❌ | ❌ |
1$ yarn add react-native-photo-manipulator
(or)
1$ npm install react-native-photo-manipulator
Please read Get Started Guide
1$ yarn expo install react-native-photo-manipulator
(or)
1$ npx expo install react-native-photo-manipulator
Import library with
1import RNPhotoManipulator from 'react-native-photo-manipulator';
Crop image with cropRegion
and resize to targetSize
if specified
1static crop(image: ImageSource, cropRegion: Rect, targetSize?: Size) => Promise<string>
Parameter | Type | Required | Description |
---|---|---|---|
image | ImageSource | Yes | The image |
cropRegion | Rect | Yes | The region of image to be cropped |
targetSize | Size | No | The target size of result image |
mimeType | 'image/jpeg', 'image/png' | No | Output file format |
Promise with image path in cache directory
1const image = "https://unsplash.com/photos/qw6qQQyYQpo/download?force=true"; 2const cropRegion = { x: 5, y: 30, height: 400, width: 250 }; 3const targetSize = { height: 200, width: 150 }; 4 5RNPhotoManipulator.crop(image, cropRegion, targetSize).then(path => { 6 console.log(`Result image path: ${path}`); 7});
Save result image
with specified quality
between 0 - 100
in jpeg format
1static optimize(image: ImageSource, quality: number) => Promise<string>
Parameter | Type | Required | Description |
---|---|---|---|
image | ImageSource | Yes | The image |
quality | number | Yes | The quality of result image between 0 - 100 |
Promise with image path in cache directory
1const image = "https://unsplash.com/photos/qw6qQQyYQpo/download?force=true"; 2const quality = 90; 3 4RNPhotoManipulator.optimize(image, 90).then(path => { 5 console.log(`Result image path: ${path}`); 6});
Flip image horizontally, vertically or both
1static flipImage(image: ImageSource, mode: FlipMode) => Promise<string>
Parameter | Type | Required | Description |
---|---|---|---|
image | ImageSource | Yes | The background image |
mode | FlipMode | Yes | Flip mode Horizontal, Vertical or Both |
mimeType | 'image/jpeg', 'image/png' | No | Output file format |
Promise with image path in cache directory
1const image = "https://unsplash.com/photos/qw6qQQyYQpo/download?force=true"; 2const mode = FlipMode.Vertical; 3 4RNPhotoManipulator.flipImage(image, mode).then(path => { 5 console.log(`Result image path: ${path}`); 6});
Rotate image 90° (90° Clockwise), 180° (Half Rotation) or 270° (90° Counterclockwise)
1static rotateImage(image: ImageSource, mode: RotationMode) => Promise<string>
Parameter | Type | Required | Description |
---|---|---|---|
image | ImageSource | Yes | The background image |
mode | RotationMode | Yes | Rotation mode 90° (90° Clockwise), 180° (Half Rotation) or 270° (90° Counterclockwise) |
mimeType | 'image/jpeg', 'image/png' | No | Output file format |
Promise with image path in cache directory
1const image = "https://unsplash.com/photos/qw6qQQyYQpo/download?force=true"; 2const mode = RotationMode.R90; 3 4RNPhotoManipulator.rotateImage(image, mode).then(path => { 5 console.log(`Result image path: ${path}`); 6});
Overlay image on top of background image
1static overlayImage(image: ImageSource, overlay: ImageSource, position: Point) => Promise<string>
Parameter | Type | Required | Description |
---|---|---|---|
image | ImageSource | Yes | The background image |
overlay | ImageSource | Yes | The overlay image |
position | Point | Yes | The position of overlay image in background image |
mimeType | 'image/jpeg', 'image/png' | No | Output file format |
Promise with image path in cache directory
1const image = "https://unsplash.com/photos/qw6qQQyYQpo/download?force=true"; 2const overlay = "https://www.iconfinder.com/icons/1174949/download/png/128"; 3const position = { x: 5, y: 20 }; 4 5RNPhotoManipulator.overlayImage(image, overlay, position).then(path => { 6 console.log(`Result image path: ${path}`); 7});
Print texts into image
1static printText(image: ImageSource, texts: TextOptions[]) => Promise<string>
Parameter | Type | Required | Description |
---|---|---|---|
image | ImageSource | Yes | The image |
texts | TextOptions[] | Yes | The list of text operations |
mimeType | 'image/jpeg', 'image/png' | No | Output file format |
Promise with image path in cache directory
1const image = "https://unsplash.com/photos/qw6qQQyYQpo/download?force=true"; 2const texts = [ 3 { position: { x: 50, y: 30 }, text: "Text 1", textSize: 30, color: "#000000" }, 4 { position: { x: 50, y: 30 }, text: "Text 1", textSize: 30, color: "#FFFFFF", thickness: 3 } 5]; 6 7RNPhotoManipulator.printText(image, texts).then(path => { 8 console.log(`Result image path: ${path}`); 9});
Crop, resize and do operations (overlay and printText) on image
1static batch(image: ImageSource, operations: PhotoBatchOperations[], cropRegion: Rect, targetSize?: Size, quality?: number) => Promise<string>
Parameter | Type | Required | Description |
---|---|---|---|
image | ImageSource | Yes | The image |
operations | PhotoBatchOperations[] | Yes | The list of operations |
cropRegion | Rect | Yes | The region of image to be cropped |
targetSize | Size | No | The target size of result image |
quality | number | No | The quality of result image between 0 - 100 |
mimeType | 'image/jpeg', 'image/png' | No | Output file format |
Promise with image path in cache directory
1const image = "https://unsplash.com/photos/qw6qQQyYQpo/download?force=true"; 2const cropRegion = { x: 5, y: 30, height: 400, width: 250 }; 3const targetSize = { height: 200, width: 150 }; 4const operations = [ 5 { operation: "text", options: { position: { x: 50, y: 30 }, text: "Text 1", textSize: 30, color: "#000000" } }, 6 { operation: "overlay", overlay: "https://www.iconfinder.com/icons/1174949/download/png/128", position: { x: 5, y: 20 } }, 7]; 8const quality = 90; 9 10RNPhotoManipulator.batch(image, operations, cropRegion, targetSize, quality).then(path => { 11 console.log(`Result image path: ${path}`); 12});
Image resource can be url or require()
Type | Description |
---|---|
number | Image from require('path/to/image') |
string | Image from url supports (file://, http://, https:// and ftp://) or base64 encoded (data:image/png;base64,iVBORw...) |
Represent overlay image, print text or flip operation
Overlay image batch operation
Property | Type | Description |
---|---|---|
operation | "overlay" | |
overlay | ImageSource | The overlay image |
position | Point | he position of overlay image in background image |
Print text batch operation
Property | Type | Description |
---|---|---|
operation | "text" | |
options | TextOptions | The text attributes |
Flip image batch operation
Property | Type | Description |
---|---|---|
operation | "flip" | |
mode | FlipMode | Flip mode Vertical, Horizontal or Both |
Rotate image batch operation
Property | Type | Description |
---|---|---|
operation | "rotate" | |
mode | RotationMode | Rotation mode 90° (90° Clockwise), 180° (Half Rotation) or 270° (90° Counterclockwise) |
Enum represent flip Mode
Enum | Description |
---|---|
Horizontal | Flip horizontal (y-axis) |
Vertical | Flip vertical (x-asis) |
Both | Flip vertical and horizontal |
Enum represent rotation Mode
Enum | Description |
---|---|
R90 | Rotate 90° (90° Clockwise) |
R180 | Rotate 180° (Half Rotation) |
R270 | Rotate 270° (90° Counterclockwise) |
Represent position (x, y) from top-left of image
Property | Type | Description |
---|---|---|
x | number | The x-axis coordinate from top-left |
y | number | The y-axis coordinate from top-left |
Represent area of region
Property | Type | Description |
---|---|---|
x | number | The x-axis coordinate from top-left |
y | number | The y-axis coordinate from top-left |
width | number | The width of the region |
height | number | The height of the region |
Represent size (width, height) of region or image
Property | Type | Description |
---|---|---|
width | number | The width of the region |
height | number | The height of the region |
Enum represent text align
Enum | Description |
---|---|
START | Align text to the start of the line (e.g., left-aligned text in LTR, right-aligned text in RTL) |
CENTER | Align text to the center of the line |
END | Align text to the end of the line (e.g., right-aligned text in LTR, left-aligned text in RTL) |
Enum represent text direction, this will affect coordinate and alignment
Enum | Description |
---|---|
LTR | Left-to-Right text direction (e.g., English, Spanish) [Top-Left, Left] |
RTL | Right-to-Left text direction (e.g., Arabic, Hebrew) [Top-Right, Right] |
Represent attributes of text such as text, color, size, and etc.
Property | Type | Required | Description |
---|---|---|---|
position | Point | Yes | The position of the text in background image |
text | string | Yes | The value of the text |
textSize | number | Yes | The size of the text |
fontName | string | No | The font name that can resolve by React Native iOS: Use "PostScript name" Android: Use filename |
color | string | No | The color of the text |
thickness | number | No | The thickness (border width) of the region |
rotation | number | No | The rotation of text in degrees |
shadowRadius | number | No | The shadow radius |
shadowOffset | Point | No | The shadow offset |
shadowColor | string | No | The color of the shadow |
direction | TextDirection | No | The direction of the text, default to TextDirection.LTR |
align | TextAlign | No | The direction of the text, default to TextAlign.START |
No vulnerabilities found.
Reason
no dangerous workflow patterns detected
Reason
license file detected
Details
Reason
SAST tool is run on all commits
Details
Reason
binaries present in source code
Details
Reason
branch protection is not maximal on development and all release branches
Details
Reason
7 existing vulnerabilities detected
Details
Reason
Found 2/16 approved changesets -- score normalized to 1
Reason
0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
Reason
no effort to earn an OpenSSF best practices badge detected
Reason
detected GitHub workflow tokens with excessive permissions
Details
Reason
security policy file not detected
Details
Reason
project is not fuzzed
Details
Reason
dependency not pinned by hash detected -- score normalized to 0
Details
Score
Last Scanned on 2025-07-07
The Open Source Security Foundation is a cross-industry collaboration to improve the security of open source software (OSS). The Scorecard provides security health metrics for open source projects.
Learn More