Coder Social home page Coder Social logo

broilerjs's Issues

CORS issue resolved

This amend allows CORS allow origin to work, providing the correct Access-Control-Allow-Origin header is set, by creating a new image with the crossOrigin attribute set.

It reloads the image, but it's the only way I could get around it.

Note, as per the drdrek's solution, the tag also needs crossorigin="anonymous" to avoid browser caching issue

https://stackoverflow.com/questions/31732533/s3-cors-always-send-vary-origin

( function( factory ) {
   "use strict";
   if ( typeof define === "function" && define.amd ) {

       // AMD
       define( [ "jquery" ], factory );
   } else if ( typeof exports === "object" ) {

       // CommonJs
       factory( require( "jquery" ) );
   } else {

       // Browser globals
       factory( jQuery );
   }
}( function( $ ) {
   "use strict";

   $.fn.broiler = function( callBack ) {
       var image = this[ 0 ],
           canvas = $( "<canvas/>" )[ 0 ],
           imageData;

       var imgCanvas = new Image;
       imgCanvas.crossOrigin = "Anonymous";
       imgCanvas.onload = function() {
           canvas.width = imgCanvas.width;
           canvas.height = imgCanvas.height;
           canvas.getContext( "2d" ) .drawImage( imgCanvas, 0, 0, image.width, image.height );
           imageData = canvas.getContext( "2d" ).getImageData( 0, 0, imgCanvas.width, imgCanvas.height ).data;
           $(image).click( function( event ) {
               var offset = $( this ).offset(), x, y, scrollLeft, scrollTop, start;
               scrollLeft = $( window ).scrollLeft();
               scrollTop = $( window ).scrollTop();

               x = Math.round( event.clientX - offset.left + scrollLeft );
               y = Math.round( event.clientY - offset.top + scrollTop );
               start = ( x + y * imgCanvas.width ) * 4;
               callBack( {
                   r: imageData[ start ],
                   g: imageData[ start + 1 ],
                   b: imageData[ start + 2 ],
                   a: imageData[ start + 3 ]
               } );
           } );
       }

       imgCanvas.src = image.src;

       // make sure the load event fires for cached images too
       if ( imgCanvas.complete || imgCanvas.complete === undefined ) {
           imgCanvas.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
           imgCanvas.src = src;
       }
   };

} ) );

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.