🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
Sign inDemoInstall
Socket

react-native-photo-manipulator

Package Overview
Dependencies
Maintainers
0
Versions
72
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

react-native-photo-manipulator

React Native Image Processing API to edit photo programmatically for Android and iOS.

1.9.2
latest
Source
npm
Version published
Weekly downloads
6.3K
11.28%
Maintainers
0
Weekly downloads
 
Created
Source

React Native Photo Manipulator

build Supports Android, iOS NPM License npm version NPM Downloads NPM Downloads NPM Downloads Sonar Quality Gate Sonar Coverage

React Native Image Processing API to edit photo programmatically for Android and iOS.

demo.webm

Platform Supported

FrameworkAndroidiOS
React Native✔️✔️
Expo with development build✔️✔️
Expo Go

Getting started

For react native 0.60 and above

$ yarn add react-native-photo-manipulator

(or)

$ npm install react-native-photo-manipulator

For react native 0.59 and below

Please read Get Started Guide

For Expo with development build

$ yarn expo install react-native-photo-manipulator

(or)

$ npx expo install react-native-photo-manipulator

Usage

Import library with

import RNPhotoManipulator from 'react-native-photo-manipulator';

API

Method

Crop and resize

Crop image with cropRegion and resize to targetSize if specified

Signature
static crop(image: ImageSource, cropRegion: Rect, targetSize?: Size) => Promise<string>
ParameterTypeRequiredDescription
imageImageSourceYesThe image
cropRegionRectYesThe region of image to be cropped
targetSizeSizeNoThe target size of result image
mimeType'image/jpeg', 'image/png'NoOutput file format
Returns

Promise with image path in cache directory

Example
const image = "https://unsplash.com/photos/qw6qQQyYQpo/download?force=true";
const cropRegion = { x: 5, y: 30, height: 400, width: 250 };
const targetSize = { height: 200, width: 150 };

RNPhotoManipulator.crop(image, cropRegion, targetSize).then(path => {
    console.log(`Result image path: ${path}`);
});
Result Crop Result Crop and Resize

Optimize

Save result image with specified quality between 0 - 100 in jpeg format

Signature
static optimize(image: ImageSource, quality: number) => Promise<string>
ParameterTypeRequiredDescription
imageImageSourceYesThe image
qualitynumberYesThe quality of result image between 0 - 100
Returns

Promise with image path in cache directory

Example
Result Optimize
const image = "https://unsplash.com/photos/qw6qQQyYQpo/download?force=true";
const quality = 90;

RNPhotoManipulator.optimize(image, 90).then(path => {
    console.log(`Result image path: ${path}`);
});

Flip Image

Flip image horizontally, vertically or both

Signature
static flipImage(image: ImageSource, mode: FlipMode) => Promise<string>
ParameterTypeRequiredDescription
imageImageSourceYesThe background image
modeFlipModeYesFlip mode Horizontal, Vertical or Both
mimeType'image/jpeg', 'image/png'NoOutput file format
Returns

Promise with image path in cache directory

Example
Result Flip
const image = "https://unsplash.com/photos/qw6qQQyYQpo/download?force=true";
const mode = FlipMode.Vertical;

RNPhotoManipulator.flipImage(image, mode).then(path => {
    console.log(`Result image path: ${path}`);
});

Rotate Image

Rotate image 90° (90° Clockwise), 180° (Half Rotation) or 270° (90° Counterclockwise)

Signature
static rotateImage(image: ImageSource, mode: RotationMode) => Promise<string>
ParameterTypeRequiredDescription
imageImageSourceYesThe background image
modeRotationModeYesRotation mode 90° (90° Clockwise), 180° (Half Rotation) or 270° (90° Counterclockwise)
mimeType'image/jpeg', 'image/png'NoOutput file format
Returns

Promise with image path in cache directory

Example
Result Rotate
const image = "https://unsplash.com/photos/qw6qQQyYQpo/download?force=true";
const mode = RotationMode.R90;

RNPhotoManipulator.rotateImage(image, mode).then(path => {
    console.log(`Result image path: ${path}`);
});

Overlay Image

Overlay image on top of background image

Signature
static overlayImage(image: ImageSource, overlay: ImageSource, position: Point) => Promise<string>
ParameterTypeRequiredDescription
imageImageSourceYesThe background image
overlayImageSourceYesThe overlay image
positionPointYesThe position of overlay image in background image
mimeType'image/jpeg', 'image/png'NoOutput file format
Returns

Promise with image path in cache directory

Example
Result Overlay
const image = "https://unsplash.com/photos/qw6qQQyYQpo/download?force=true";
const overlay = "https://www.iconfinder.com/icons/1174949/download/png/128";
const position = { x: 5, y: 20 };

RNPhotoManipulator.overlayImage(image, overlay, position).then(path => {
    console.log(`Result image path: ${path}`);
});

Print Text

Print texts into image

Signature
static printText(image: ImageSource, texts: TextOptions[]) => Promise<string>
ParameterTypeRequiredDescription
imageImageSourceYesThe image
textsTextOptions[]YesThe list of text operations
mimeType'image/jpeg', 'image/png'NoOutput file format
Returns

Promise with image path in cache directory

Example
Result Print Text
const image = "https://unsplash.com/photos/qw6qQQyYQpo/download?force=true";
const texts = [
    { position: { x: 50, y: 30 }, text: "Text 1", textSize: 30, color: "#000000" },
    { position: { x: 50, y: 30 }, text: "Text 1", textSize: 30, color: "#FFFFFF", thickness: 3 }
];

RNPhotoManipulator.printText(image, texts).then(path => {
    console.log(`Result image path: ${path}`);
});

Batch

Crop, resize and do operations (overlay and printText) on image

Signature
static batch(image: ImageSource, operations: PhotoBatchOperations[], cropRegion: Rect, targetSize?: Size, quality?: number) => Promise<string>
ParameterTypeRequiredDescription
imageImageSourceYesThe image
operationsPhotoBatchOperations[]YesThe list of operations
cropRegionRectYesThe region of image to be cropped
targetSizeSizeNoThe target size of result image
qualitynumberNoThe quality of result image between 0 - 100
mimeType'image/jpeg', 'image/png'NoOutput file format
Returns

Promise with image path in cache directory

Example
Result Batch
const image = "https://unsplash.com/photos/qw6qQQyYQpo/download?force=true";
const cropRegion = { x: 5, y: 30, height: 400, width: 250 };
const targetSize = { height: 200, width: 150 };
const operations = [
    { operation: "text", options: { position: { x: 50, y: 30 }, text: "Text 1", textSize: 30, color: "#000000" } },
    { operation: "overlay", overlay: "https://www.iconfinder.com/icons/1174949/download/png/128", position: { x: 5, y: 20 } },
];
const quality = 90;

RNPhotoManipulator.batch(image, operations, cropRegion, targetSize, quality).then(path => {
    console.log(`Result image path: ${path}`);
});

Types

ImageSource

Image resource can be url or require()

TypeDescription
numberImage from require('path/to/image')
stringImage from url supports (file://, http://, https:// and ftp://) or base64 encoded (data:image/png;base64,iVBORw...)

PhotoBatchOperations

Represent overlay image, print text or flip operation

PhotoBatchOverlay

Overlay image batch operation

PropertyTypeDescription
operation"overlay"
overlayImageSourceThe overlay image
positionPointhe position of overlay image in background image

PhotoBatchPrintText

Print text batch operation

PropertyTypeDescription
operation"text"
optionsTextOptionsThe text attributes

PhotoBatchFlip

Flip image batch operation

PropertyTypeDescription
operation"flip"
modeFlipModeFlip mode Vertical, Horizontal or Both

PhotoBatchRotate

Rotate image batch operation

PropertyTypeDescription
operation"rotate"
modeRotationModeRotation mode 90° (90° Clockwise), 180° (Half Rotation) or 270° (90° Counterclockwise)

FlipMode

Enum represent flip Mode

EnumDescription
HorizontalFlip horizontal (y-axis)
VerticalFlip vertical (x-asis)
BothFlip vertical and horizontal

RotationMode

Enum represent rotation Mode

EnumDescription
R90Rotate 90° (90° Clockwise)
R180Rotate 180° (Half Rotation)
R270Rotate 270° (90° Counterclockwise)

Point

Represent position (x, y) from top-left of image

PropertyTypeDescription
xnumberThe x-axis coordinate from top-left
ynumberThe y-axis coordinate from top-left

Rect

Represent area of region

PropertyTypeDescription
xnumberThe x-axis coordinate from top-left
ynumberThe y-axis coordinate from top-left
widthnumberThe width of the region
heightnumberThe height of the region

Size

Represent size (width, height) of region or image

PropertyTypeDescription
widthnumberThe width of the region
heightnumberThe height of the region

TextAlign

Enum represent text align

EnumDescription
STARTAlign text to the start of the line (e.g., left-aligned text in LTR, right-aligned text in RTL)
CENTERAlign text to the center of the line
ENDAlign text to the end of the line (e.g., right-aligned text in LTR, left-aligned text in RTL)

TextDirection

Enum represent text direction, this will affect coordinate and alignment

EnumDescription
LTRLeft-to-Right text direction (e.g., English, Spanish) [Top-Left, Left]
RTLRight-to-Left text direction (e.g., Arabic, Hebrew) [Top-Right, Right]

TextOptions

Represent attributes of text such as text, color, size, and etc.

PropertyTypeRequiredDescription
positionPointYesThe position of the text in background image
textstringYesThe value of the text
textSizenumberYesThe size of the text
fontNamestringNoThe font name that can resolve by React Native
iOS: Use "PostScript name"
Android: Use filename
colorstringNoThe color of the text
thicknessnumberNoThe thickness (border width) of the region
rotationnumberNoThe rotation of text in degrees
shadowRadiusnumberNoThe shadow radius
shadowOffsetPointNoThe shadow offset
shadowColorstringNoThe color of the shadow
directionTextDirectionNoThe direction of the text, default to TextDirection.LTR
alignTextAlignNoThe direction of the text, default to TextAlign.START

Keywords

react-native

FAQs

Package last updated on 30 Jan 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts