npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

expo-image-manipulator-view

v4.0.0

Published

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

Downloads

29

Readme

Note

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

  • Up supported Expo SDK to 44.
  • 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.

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

| Props | Type | Default | Description | |------------------|----------|----------------------------------------------------------------------------|----------------------------------------------------| | isVisible | boolean | false | Show or hide modal with image manipulator UI | | onBeforePictureChoosed | function | | Callback before done. You must return boolean. If you return false, it will stop. | | onPictureChoosed | function | | Callback where is passed image edited as parameter | | photo | object | { uri: string } | uri of image to be edited | | btnTexts | object | { crop: string, done: string, processing: string} | name for crop, done and processing texts | | onToggleModal | function | | Callback called when modal is dismissed | | borderColor | string | #a4a4a4 | Color for crop mask border | | allowRotate | boolean | true | Show rotate option | | allowFlip | boolean | true | Show flip option | | saveOptions | object | { compress: number, format: string, base64: boolean} | A map defining how modified image should be saved
| fixedMask | object | { width: number, height: number } | Width and height fixed mask | ratio | object | { width: number, height: number } | Width and height cropping ratio | icons | object | { 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