Giter VIP home page Giter VIP logo

ngx-cropper's Introduction

ngx-cropper

An Angular5 image plugin, includes upload, cropper, save to server.

PRs Welcome

Example

Example

Usage

1. Install

  npm i -S ngx-cropper

2. Config example.module.ts

import { NgxCropperModule } from 'ngx-cropper';
import 'ngx-cropper/dist/ngx-cropper.min.css';

@NgModule({
  imports: [
    NgxCropperModule
  ]
})

3. Config example.component.html

  <ngx-cropper [config]="ngxCropperConfig" (returnData)="onReturnData($event)"></ngx-cropper>

4. Config example.component.ts

import { NgxCropperOption } from 'ngx-cropper';

@component()
export class ExampleComponent {
  public ngxCropperConfig: NgxCropperOption;

  constructor() {
    this.ngxCropperConfig = {
      url: null, // image server url
      maxsize: 512000, // image max size, default 500k = 512000bit
      title: 'Apply your image size and position', // edit modal title, this is default
      uploadBtnName: 'Upload Image', // default Upload Image
      uploadBtnClass: null, // default bootstrap styles, btn btn-primary
      cancelBtnName: 'Cancel', // default Cancel
      cancelBtnClass: null, // default bootstrap styles, btn btn-default
      applyBtnName: 'Apply', // default Apply
      applyBtnClass: null, // default bootstrap styles, btn btn-primary
      errorMsgs: {  // These error msgs are to be displayed to the user (not the ones sent in returnData)
        4000: null, // default `Max size allowed is ${maxsize}kb, current size is ${currentSize}kb`
        4001: null  // default 'When sent to the server, something went wrong'
      },
      fdName: 'file', // default 'file', this is  Content-Disposition: form-data; name="file"; filename="fire.jpg"
      aspectRatio: 1 / 1, // default 1 / 1, for example: 16 / 9, 4 / 3 ...
      viewMode: 0 // default 0, value can be 0, 1, 2, 3
    };
  }

  // deal callback data
  public onReturnData(data: any) {
    // Do what you want to do
    console.warn(JSON.parse(data));


    //  Here has three type of messages now
    //  1. Max size
    // {
    //     code: 4000,
    //     data: currentSize,
    //     msg: `Max size allowed is ${this.viewConfig.maxsize / 1024}kb, current size is ${currentSize}kb`
    //  }

    //  2. Error
    //  {
    //       code: 4001,
    //       data: null,
    //       msg: 'ERROR: When sent to the server, something went wrong, please check the server url.'
    //  }

    //  3. Image type error
    // {
    //       code: 4002,
    //       data: null,
    //       msg: `The type you can upload is only image format`
    // }

    //  4. Success
    //  {
    //       code: 2000,
    //       data,
    //       msg: 'The image was sent to the server successfully'
    //  }
  }
}

Development

Welcome you join us and develop together, it's my honor you commit pull request.

git clone [email protected]:TaylorPzreal/ngx-cropper.git

npm run start # start developing

npm run build # start building prod packages

ngx-cropper's People

Contributors

abdatta avatar taylorpzreal avatar zekexu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

ngx-cropper's Issues

Remove dependency over id=inputImage

Due to the same id, it is not possible to have multiple instances of this module on the same page (for example if used in a for loop). The last instance only gets triggered bcuz they all have the same id. Kindly remove this dependency over id.
Also, it would be nice if the DOM is not directly manipulated, as it might cause a problem in a PWA.

I'll try to fix it myself as well, and if I succeed I'll send a pull request.

Besides, it is a very nice and useful module. Thanks!

rxjs 6 compatibility issues.

RROR in ./node_modules/ngx-cropper/dist/ngx-cropper.service.js
Module not found: Error: Can't resolve 'rxjs/add/operator/catch' in '/var/www/workspace/appduction/careem/ambassador-admin-panel/node_modules/ngx-cropper/dist'
ERROR in ./node_modules/ngx-cropper/dist/ngx-cropper.service.js
Module not found: Error: Can't resolve 'rxjs/add/operator/map' in '/var/www/workspace/appduction/careem/ambassador-admin-panel/node_modules/ngx-cropper/dist'

"rxjs": "^6.0.0"
"@angular/core": "^6.0.3"

Build AOT error

I use angular 5.

When i build aot, i have error

ERROR in Error: Unexpected value 'NgxCropperModule in /Users/admin/dung/signal/node_modules/ngx-cropper/dist/ngx-cropper.module.d.ts' imported by the module 'ProfileModule in /Users/admin/dung/signal/src/app/users/profile/profile.module.ts'. Please add a @NgModule annotation.

image

Cannot select same image again

If I select one image and then cancel or apply, I cannot use the upload button to select that same image again, as the modal doesn't open.
This can happen when :

  1. I mistakenly cancel but want to select that image again.
  2. I cropped incorrectly and pressed apply, and want to reselect that same image to correctly crop it.

This happens because the modal is only triggered when there is a change in the file in the input field.
I am making a pull request to solve this.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.