Facebook Style Image Cropping (Javascript Preview)

While others are sun bathing somewhere on the shores of Black Sea I received another interesting task – to  implement cropping for user uploaded profile images. My first idea was to port MooCrop to Mootools 1.2 and apply couple of modifications, but the customer wanted the cropping to be exactly like in Facebook. For those who don’t know it is plain old boring mouse drag.

Instead of generating thumbnail and then cropping it (like in Facebook) I take the original (uploaded) image and resize it with CSS (yes I know it is not the right thing to do but for a quick preview IMO it is ok and we skip one resizing operation). Then I use the Drag Class to create a drag to scroll container (like in Adobe Acrobat) and finally with two hidden input fields I send the coordinates to the server side part which takes care of the resizing and cropping of the image.

Enough mumbojumbo – the cropping example and the pic

FaceBook cropping

  • Print this article!
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • DZone
  • E-mail this story to a friend!
  • LinkedIn
  • NewsVine
  • Reddit
  • Slashdot
  • SphereIt
  • Technorati
  • Twitter

Tags: , ,

Hey, it seems that you are using AdBlocking software just like me.
However I tend to disable it for small blogs like this one. If you would like to help me pay for my webhosting please allow your Adblocking software to show adverts from this site. Thanks!

19 Responses to “Facebook Style Image Cropping (Javascript Preview)”

  1. Morgan Says:

    Hi, great script! After having a play with a few browser versions I noticed that in IE (I tested with IE 7) if the image is too long and you drag horizontally then there is a pixel or two movement up and down also. Not a big concern though.

    Thanks for sharing your script.

    Morgan

  2. Peter Says:

    @Morgan – Probably you can fine tune the calculations to avoid this.

    Cheers

  3. Mitch Says:

    How do I download this script, Pete?

  4. Peter Says:

    @Mitch view source of the example. It is all there.

  5. darwin Says:

    hi,how can i set the default left position and top position of that image ?
    thanks..

  6. HT Says:

    Hi.

    Thanks for a great script!
    The only thing I’m missing is a setCoordinates(..) function, which let me set image left and top coordinates other than 0.

    Is there a solution to this?

    HT

  7. newbie Says:

    Has this croping script in prototype framework?

  8. Peter Says:

    @newbie
    No, it uses Mootools Framework.

  9. Rasmus Says:

    How do i make it update the database with the information, when dragging??

  10. Peter Says:

    @Rasmus – You can put two hidden form inputs and fill with the coordinates

  11. Rasmus Says:

    Hey .. thanks Peter.. Great script ..

    Just another question. How, when the information is updated do i show a picture with the picture applied, and how when i edit the picture again will it show with the (now) defined data.

  12. Peter Says:

    @Rasmus – You can tweak the styles so it match the stored value

  13. Nimesh Kumar Says:

    Hi, thanks a lot , i use this functionality in my pages and i think its a great tool……………

    Cheers

  14. Rasmus Says:

    Okay, great .. Which ones should be tweaked? :) Sorry for all by questions

  15. Marc Says:

    Great script! Exactly what I’ve been looking for! :)

  16. Harsh Says:

    great script as what i was looking for.
    but for some reason its not working for me instead of croping and image i get alert message. CAN ANYONE HELP?
    CHEERS

  17. Peter Says:

    @Harsh – Put it online and I can check what went wrong

  18. Yancho Says:

    Great work!
    Can you add resize and rotate with sliders.
    I’m trying, but when I move image and then chage the width – it’s not fit to the cropper…

  19. Peter Says:

    Hi Yancho (мараба дет се вика) you can check this one – http://www.nwhite.net/MooCrop/ it has resize and might be closer to your purposes. I haven’t planned any work on this one.

Leave a Reply