npm.io
1.1.3 • Published 12h ago

@imran_afzal/react-native-photo-editor

Licence
MIT
Version
1.1.3
Deps
1
Size
3.0 MB
Vulns
0
Weekly
0

@imran_afzal/react-native-photo-editor

A powerful, customizable, and high-performance photo editor for React Native and Expo, powered by Skia.

npm version license platform

Features

  • Filters: Grayscale, Sepia, Vintage, Dramatic, and more.
  • Adjustments: Brightness, Contrast, Saturation, Exposure, Warmth, Vignette, and Grain.
  • Text Overlays: Add multiple text layers with custom fonts, colors, backgrounds, and shadows.
  • Drawing: Freehand drawing with brush tool.
  • Crop & Rotate: Intuitive cropping and rotation tools.
  • Templates: Pre-designed poster and edit templates.
  • Undo/Redo: Full history support for all edits.
  • High Performance: Hardware-accelerated rendering via @shopify/react-native-skia.

Installation

npm install @imran_afzal/react-native-photo-editor
# or
yarn add @imran_afzal/react-native-photo-editor
Peer Dependencies

This package requires several peer dependencies. Install them if you haven't already:

npm install @shopify/react-native-skia react-native-gesture-handler react-native-reanimated react-native-safe-area-context @react-native-community/slider @react-native-vector-icons/material-icons @dr.pogodin/react-native-fs
Expo Setup

For Expo projects, you must use Development Builds (expo-dev-client) as this package uses native modules. It will not work in Expo Go.

npx expo install @shopify/react-native-skia react-native-gesture-handler react-native-reanimated react-native-safe-area-context @react-native-community/slider @dr.pogodin/react-native-fs

Quick Start

import React, { useState } from 'react';
import { PhotoEditor } from '@imran_afzal/react-native-photo-editor';

export default function App() {
  const [visible, setVisible] = useState(true);

  return (
    <PhotoEditor
      visible={visible}
      imageUri="https://example.com/photo.jpg"
      onSave={(result) => {
        console.log('Saved image width:', result.width);
        console.log('Image saved to:', result.uri);
        setVisible(false);
      }}
      onCancel={() => setVisible(false)}
    />
  );
}

Props API

Prop Type Default Description
visible boolean Required Controls the visibility of the editor modal.
imageUri string Required The URI of the image to edit (local file or remote URL).
onSave (result: PhotoEditorResult) => void Required Called when the user clicks "Save".
onCancel () => void Required Called when the user clicks "Cancel" or closes the modal.
imageWidth number undefined Width of the image (auto-detected if omitted).
imageHeight number undefined Height of the image (auto-detected if omitted).
tools EditorTool[] all tools Array of tool names to display in the toolbar.
theme Partial<ThemeColors> system theme Override specific theme colors.
outputFormat 'png' | 'jpeg' 'png' Format of the output image.
outputQuality number 100 Quality of the output image (0-100).

License

MIT Imran Afzal

Keywords