Git Product home page Git Product logo

Comments (7)

bersling avatar bersling commented on September 27, 2024 2

Here's the resize function I've been using now for a while:

js

resizeImage: function ( file ) {

    var resized = {};

    var deferred = $q.defer();

    var img = document.createElement("img");
    var reader = new FileReader();
    reader.onload = function(e) {
         // resize the picture
         img.src = e.target.result;

        var canvas = document.createElement("canvas");

        var MAX_WIDTH = 150;
        var MAX_HEIGHT = 150;
        var width = img.width;
        var height = img.height;

        if (width > height) {
          if (width > MAX_WIDTH) {
            height *= MAX_WIDTH / width;
            width = MAX_WIDTH;
          }
        } else {
          if (height > MAX_HEIGHT) {
            width *= MAX_HEIGHT / height;
            height = MAX_HEIGHT;
          }
        }
        canvas.width = width;
        canvas.height = height;
        var ctx = canvas.getContext("2d");
        ctx.drawImage(img, 0, 0, width, height);

        resized.base64 = canvas.toDataURL("image/png");
        deferred.resolve(resized);
    };
    reader.readAsDataURL(file, "UTF-8");

    return deferred.promise;

  }

html

 <input ... parser="resizeImage" base-sixty-four-input>

Note that you need the $q service. Here is a fiddle: http://fiddle.jshell.net/51bsbzL0/93/

from angular-base64-upload.

AlexVKO avatar AlexVKO commented on September 27, 2024

+1

from angular-base64-upload.

adonespitogo avatar adonespitogo commented on September 27, 2024

@bersling You may need to use $scope.$apply() if your using img.onload = function (). Anyway I'm working on this. Will give you update soon.

from angular-base64-upload.

adonespitogo avatar adonespitogo commented on September 27, 2024

@AlexVKO Please try this code:

      $scope.resizeImage = function (file, base64) {
        var deferred = $q.defer();
        // We create an image to receive the Data URI
        var img = document.createElement('img');

        // When the event "onload" is triggered we can resize the image.
        img.onload = function()
            {
                // We create a canvas and get its context.
                var canvas = document.createElement('canvas');
                var ctx = canvas.getContext('2d');

                // We set the dimensions at the wanted size.
                canvas.width = 100;
                canvas.height = 100;

                // We resize the image with the canvas method drawImage();
                ctx.drawImage(this, 0, 0, 100, 100);

                var dataURI = canvas.toDataURL();
                base64.resizedDataURI = dataURI;
                deferred.resolve(base64);

                $scope.$apply();

                /////////////////////////////////////////
                // Use and treat your Data URI here !! //
                /////////////////////////////////////////
            };
        img.src = 'data:'+base64.filetype+';base64,'+base64.base64;
        return deferred.promise;
      };


<input type="file" ng-model="file" name="file" base-sixty-four-input accept="image/*" parser="resizeImage">

The resized image is the base64.resizedDataURI.

from angular-base64-upload.

kymowang avatar kymowang commented on September 27, 2024

onload="postLoadFunc" parser="resizeImage", resizeImage will execute before postLoadFunc, but postLoadFunc will execute before resizeImage return. here is the log: before resize, begin upload, after resize. What i want is before resize, after resize, begin upload. hope you can catch what i said.

from angular-base64-upload.

GianlucaBobbio avatar GianlucaBobbio commented on September 27, 2024

I'm trying this but I still see the unresized base64. Do you have any plucker of your example?

from angular-base64-upload.

GianlucaBobbio avatar GianlucaBobbio commented on September 27, 2024

Thank you very much sir. Everything working now.

from angular-base64-upload.

Related Issues (20)

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.