Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

expo-image-manipulator-view

Package Overview
Dependencies
Maintainers
0
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

expo-image-manipulator-view

Crop, rotate and flip images without detach your expo project!

  • 5.0.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
3
decreased by-76.92%
Maintainers
0
Weekly downloads
 
Created
Source

Expo image manipulator view

Note

This repository was forked from brunon80/expo-image-crop(it is probably no longer maintained). The changes are as follows:

  • Up supported Expo SDK to 52.
  • Support aspect ratio.
  • Support images longer than the screen with scroll.
  • Several icons can be changed.
  • Remove unnecessary dependencies from package.json.
  • Reorganized directory structure.
  • Rewritten to typescript, and type information was provided.

All changes can be found here.

Multi platform 🚀





npm version npm version npm version

Crop and rotate image without detach your expo project!

Expo.ImageManipulator is only a API without a UI, so you have to build your own UI on top of it, or choose detach your project to use third party linked packages, witch is no so good because a pure javascript Expo project is marvelous!

PRs are welcome...

No more flickering while resizing image mask!

Compatible with Expo SDK 44

Support typescript

Install

yarn add expo-image-manipulator-view

Example

import React from 'react'
import { Dimensions, Button, ImageBackground } from 'react-native'
import { ImageManipulatorView } from 'expo-image-manipulator-view'

export default class App extends React.Component {
  state = {
      isVisible: false,
      uri: 'https://i.pinimg.com/originals/39/42/a1/3942a180299d5b9587c2aa8e09d91ecf.jpg',
  }
  onToggleModal = () => {
      const { isVisible } = this.state
      this.setState({ isVisible: !isVisible })
  }
  render() {
      const { uri, isVisible } = this.state
      const { width, height } = Dimensions.get('window')
      return (
          <ImageBackground
              resizeMode="contain"
              style={{
                  justifyContent: 'center', padding: 20, alignItems: 'center', height, width, backgroundColor: 'black',
              }}
              source={{ uri }}
          >
              <Button title="Open Image Editor" onPress={() => this.setState({ isVisible: true })} />
              <ImageManipulatorView
                  photo={{ uri }}
                  isVisible={isVisible}
                  onPictureChoosed={({ uri: uriM }) => this.setState({ uri: uriM })}
                  onToggleModal={this.onToggleModal}
              />
          </ImageBackground>
      )
  }
}

Props

PropsTypeDefaultDescription
isVisiblebooleanfalseShow or hide modal with image manipulator UI
onBeforePictureChoosedfunctionCallback before done. You must return boolean. If you return false, it will stop.
onPictureChoosedfunctionCallback where is passed image edited as parameter
photoobject{ uri: string } uri of image to be edited
btnTextsobject{ crop: string, done: string, processing: string}name for crop, done and processing texts
onToggleModalfunctionCallback called when modal is dismissed
borderColorstring#a4a4a4Color for crop mask border
allowRotatebooleantrueShow rotate option
allowFlipbooleantrueShow flip option
saveOptionsobject{ compress: number, format: string, base64: boolean}A map defining how modified image should be saved
fixedMaskobject{ width: number, height: number }Width and height fixed mask
ratioobject{ width: number, height: number }Width and height cropping ratio
iconsobject{ crop: ReactNode, back: ReactNode, processing: ReactNode }Some icons can be changed

Return of onBeforePictureChoosed/onPictureChoosed is an object with format:

{
    uri: string,
    base64: string | undefined, // undefined if base64 is false on saveOptions prop
    width: number,
    height: number,
    cropped: boolean // Whether cropped or not
}

Run the example!

  • Clone this repository
  • cd source/
  • run yarn or npm install
  • enjoy!

The animation is fluid even on dev mode!

Requirements

  • Use it into Expo app (from expo client, Standalone app or ExpoKit app).
  • Because we need to have access to ImageManipulator

Features

  • Crop
  • Rotate
  • Flip (Horizontal and Vertical)
  • Base64

If you have some problem open a issue

Keywords

FAQs

Package last updated on 29 Nov 2024

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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc