Showing
4 changed files
with
116 additions
and
17 deletions
| ... | @@ -9,6 +9,7 @@ | ... | @@ -9,6 +9,7 @@ |
| 9 | "license": "ISC", | 9 | "license": "ISC", |
| 10 | "dependencies": { | 10 | "dependencies": { |
| 11 | "@babel/plugin-proposal-class-properties": "^7.13.0", | 11 | "@babel/plugin-proposal-class-properties": "^7.13.0", |
| 12 | + "@dhdbstjr98/gif.js": "^1.0.0", | ||
| 12 | "gifencoder": "^2.0.1", | 13 | "gifencoder": "^2.0.1", |
| 13 | "hangul-js": "^0.2.6", | 14 | "hangul-js": "^0.2.6", |
| 14 | "stream": "0.0.2" | 15 | "stream": "0.0.2" |
| ... | @@ -1168,6 +1169,15 @@ | ... | @@ -1168,6 +1169,15 @@ |
| 1168 | "to-fast-properties": "^2.0.0" | 1169 | "to-fast-properties": "^2.0.0" |
| 1169 | } | 1170 | } |
| 1170 | }, | 1171 | }, |
| 1172 | + "node_modules/@dhdbstjr98/gif.js": { | ||
| 1173 | + "version": "1.0.0", | ||
| 1174 | + "resolved": "https://registry.npmjs.org/@dhdbstjr98/gif.js/-/gif.js-1.0.0.tgz", | ||
| 1175 | + "integrity": "sha512-LI7RyCiTnEmuPBOPnIpZosT3zSuSGXwjdkjQC+HwiYKjBZeIozoKWhIwgE0w533rDUyRxM3dhmAMzlyIzKx/OQ==", | ||
| 1176 | + "dependencies": { | ||
| 1177 | + "buffer": "^6.0.3", | ||
| 1178 | + "events": "^3.3.0" | ||
| 1179 | + } | ||
| 1180 | + }, | ||
| 1171 | "node_modules/@discoveryjs/json-ext": { | 1181 | "node_modules/@discoveryjs/json-ext": { |
| 1172 | "version": "0.5.2", | 1182 | "version": "0.5.2", |
| 1173 | "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz", | 1183 | "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz", |
| ... | @@ -1854,6 +1864,25 @@ | ... | @@ -1854,6 +1864,25 @@ |
| 1854 | "node": ">=0.10.0" | 1864 | "node": ">=0.10.0" |
| 1855 | } | 1865 | } |
| 1856 | }, | 1866 | }, |
| 1867 | + "node_modules/base64-js": { | ||
| 1868 | + "version": "1.5.1", | ||
| 1869 | + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", | ||
| 1870 | + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", | ||
| 1871 | + "funding": [ | ||
| 1872 | + { | ||
| 1873 | + "type": "github", | ||
| 1874 | + "url": "https://github.com/sponsors/feross" | ||
| 1875 | + }, | ||
| 1876 | + { | ||
| 1877 | + "type": "patreon", | ||
| 1878 | + "url": "https://www.patreon.com/feross" | ||
| 1879 | + }, | ||
| 1880 | + { | ||
| 1881 | + "type": "consulting", | ||
| 1882 | + "url": "https://feross.org/support" | ||
| 1883 | + } | ||
| 1884 | + ] | ||
| 1885 | + }, | ||
| 1857 | "node_modules/bcrypt-pbkdf": { | 1886 | "node_modules/bcrypt-pbkdf": { |
| 1858 | "version": "1.0.2", | 1887 | "version": "1.0.2", |
| 1859 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", | 1888 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", |
| ... | @@ -1953,6 +1982,29 @@ | ... | @@ -1953,6 +1982,29 @@ |
| 1953 | "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" | 1982 | "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" |
| 1954 | } | 1983 | } |
| 1955 | }, | 1984 | }, |
| 1985 | + "node_modules/buffer": { | ||
| 1986 | + "version": "6.0.3", | ||
| 1987 | + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", | ||
| 1988 | + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", | ||
| 1989 | + "funding": [ | ||
| 1990 | + { | ||
| 1991 | + "type": "github", | ||
| 1992 | + "url": "https://github.com/sponsors/feross" | ||
| 1993 | + }, | ||
| 1994 | + { | ||
| 1995 | + "type": "patreon", | ||
| 1996 | + "url": "https://www.patreon.com/feross" | ||
| 1997 | + }, | ||
| 1998 | + { | ||
| 1999 | + "type": "consulting", | ||
| 2000 | + "url": "https://feross.org/support" | ||
| 2001 | + } | ||
| 2002 | + ], | ||
| 2003 | + "dependencies": { | ||
| 2004 | + "base64-js": "^1.3.1", | ||
| 2005 | + "ieee754": "^1.2.1" | ||
| 2006 | + } | ||
| 2007 | + }, | ||
| 1956 | "node_modules/buffer-from": { | 2008 | "node_modules/buffer-from": { |
| 1957 | "version": "1.1.1", | 2009 | "version": "1.1.1", |
| 1958 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", | 2010 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", |
| ... | @@ -2762,7 +2814,6 @@ | ... | @@ -2762,7 +2814,6 @@ |
| 2762 | "version": "3.3.0", | 2814 | "version": "3.3.0", |
| 2763 | "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", | 2815 | "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", |
| 2764 | "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", | 2816 | "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", |
| 2765 | - "dev": true, | ||
| 2766 | "engines": { | 2817 | "engines": { |
| 2767 | "node": ">=0.8.x" | 2818 | "node": ">=0.8.x" |
| 2768 | } | 2819 | } |
| ... | @@ -3466,6 +3517,25 @@ | ... | @@ -3466,6 +3517,25 @@ |
| 3466 | "node": ">=0.10.0" | 3517 | "node": ">=0.10.0" |
| 3467 | } | 3518 | } |
| 3468 | }, | 3519 | }, |
| 3520 | + "node_modules/ieee754": { | ||
| 3521 | + "version": "1.2.1", | ||
| 3522 | + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", | ||
| 3523 | + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", | ||
| 3524 | + "funding": [ | ||
| 3525 | + { | ||
| 3526 | + "type": "github", | ||
| 3527 | + "url": "https://github.com/sponsors/feross" | ||
| 3528 | + }, | ||
| 3529 | + { | ||
| 3530 | + "type": "patreon", | ||
| 3531 | + "url": "https://www.patreon.com/feross" | ||
| 3532 | + }, | ||
| 3533 | + { | ||
| 3534 | + "type": "consulting", | ||
| 3535 | + "url": "https://feross.org/support" | ||
| 3536 | + } | ||
| 3537 | + ] | ||
| 3538 | + }, | ||
| 3469 | "node_modules/ignore-walk": { | 3539 | "node_modules/ignore-walk": { |
| 3470 | "version": "3.0.3", | 3540 | "version": "3.0.3", |
| 3471 | "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", | 3541 | "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", |
| ... | @@ -7314,6 +7384,15 @@ | ... | @@ -7314,6 +7384,15 @@ |
| 7314 | "to-fast-properties": "^2.0.0" | 7384 | "to-fast-properties": "^2.0.0" |
| 7315 | } | 7385 | } |
| 7316 | }, | 7386 | }, |
| 7387 | + "@dhdbstjr98/gif.js": { | ||
| 7388 | + "version": "1.0.0", | ||
| 7389 | + "resolved": "https://registry.npmjs.org/@dhdbstjr98/gif.js/-/gif.js-1.0.0.tgz", | ||
| 7390 | + "integrity": "sha512-LI7RyCiTnEmuPBOPnIpZosT3zSuSGXwjdkjQC+HwiYKjBZeIozoKWhIwgE0w533rDUyRxM3dhmAMzlyIzKx/OQ==", | ||
| 7391 | + "requires": { | ||
| 7392 | + "buffer": "^6.0.3", | ||
| 7393 | + "events": "^3.3.0" | ||
| 7394 | + } | ||
| 7395 | + }, | ||
| 7317 | "@discoveryjs/json-ext": { | 7396 | "@discoveryjs/json-ext": { |
| 7318 | "version": "0.5.2", | 7397 | "version": "0.5.2", |
| 7319 | "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz", | 7398 | "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz", |
| ... | @@ -7923,6 +8002,11 @@ | ... | @@ -7923,6 +8002,11 @@ |
| 7923 | } | 8002 | } |
| 7924 | } | 8003 | } |
| 7925 | }, | 8004 | }, |
| 8005 | + "base64-js": { | ||
| 8006 | + "version": "1.5.1", | ||
| 8007 | + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", | ||
| 8008 | + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" | ||
| 8009 | + }, | ||
| 7926 | "bcrypt-pbkdf": { | 8010 | "bcrypt-pbkdf": { |
| 7927 | "version": "1.0.2", | 8011 | "version": "1.0.2", |
| 7928 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", | 8012 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", |
| ... | @@ -8006,6 +8090,15 @@ | ... | @@ -8006,6 +8090,15 @@ |
| 8006 | "node-releases": "^1.1.70" | 8090 | "node-releases": "^1.1.70" |
| 8007 | } | 8091 | } |
| 8008 | }, | 8092 | }, |
| 8093 | + "buffer": { | ||
| 8094 | + "version": "6.0.3", | ||
| 8095 | + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", | ||
| 8096 | + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", | ||
| 8097 | + "requires": { | ||
| 8098 | + "base64-js": "^1.3.1", | ||
| 8099 | + "ieee754": "^1.2.1" | ||
| 8100 | + } | ||
| 8101 | + }, | ||
| 8009 | "buffer-from": { | 8102 | "buffer-from": { |
| 8010 | "version": "1.1.1", | 8103 | "version": "1.1.1", |
| 8011 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", | 8104 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", |
| ... | @@ -8664,8 +8757,7 @@ | ... | @@ -8664,8 +8757,7 @@ |
| 8664 | "events": { | 8757 | "events": { |
| 8665 | "version": "3.3.0", | 8758 | "version": "3.3.0", |
| 8666 | "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", | 8759 | "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", |
| 8667 | - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", | 8760 | + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" |
| 8668 | - "dev": true | ||
| 8669 | }, | 8761 | }, |
| 8670 | "execa": { | 8762 | "execa": { |
| 8671 | "version": "5.0.0", | 8763 | "version": "5.0.0", |
| ... | @@ -9248,6 +9340,11 @@ | ... | @@ -9248,6 +9340,11 @@ |
| 9248 | "safer-buffer": ">= 2.1.2 < 3" | 9340 | "safer-buffer": ">= 2.1.2 < 3" |
| 9249 | } | 9341 | } |
| 9250 | }, | 9342 | }, |
| 9343 | + "ieee754": { | ||
| 9344 | + "version": "1.2.1", | ||
| 9345 | + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", | ||
| 9346 | + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" | ||
| 9347 | + }, | ||
| 9251 | "ignore-walk": { | 9348 | "ignore-walk": { |
| 9252 | "version": "3.0.3", | 9349 | "version": "3.0.3", |
| 9253 | "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", | 9350 | "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", | ... | ... |
| ... | @@ -20,6 +20,7 @@ | ... | @@ -20,6 +20,7 @@ |
| 20 | }, | 20 | }, |
| 21 | "dependencies": { | 21 | "dependencies": { |
| 22 | "@babel/plugin-proposal-class-properties": "^7.13.0", | 22 | "@babel/plugin-proposal-class-properties": "^7.13.0", |
| 23 | + "@dhdbstjr98/gif.js": "^1.0.0", | ||
| 23 | "gifencoder": "^2.0.1", | 24 | "gifencoder": "^2.0.1", |
| 24 | "hangul-js": "^0.2.6", | 25 | "hangul-js": "^0.2.6", |
| 25 | "stream": "0.0.2" | 26 | "stream": "0.0.2" | ... | ... |
| 1 | -import GIF from "gifencoder"; | 1 | +import GIF from "@dhdbstjr98/gif.js"; |
| 2 | import { fabric } from "fabric"; | 2 | import { fabric } from "fabric"; |
| 3 | import Component from "./components"; | 3 | import Component from "./components"; |
| 4 | 4 | ||
| ... | @@ -12,23 +12,24 @@ export class GifGenerator { | ... | @@ -12,23 +12,24 @@ export class GifGenerator { |
| 12 | } | 12 | } |
| 13 | 13 | ||
| 14 | _initializeGif() { | 14 | _initializeGif() { |
| 15 | - this.gif = new GIF(this.width, this.height); | 15 | + this.gif = new GIF({ |
| 16 | - this.gif.setTransparent(null); | 16 | + width: this.width, |
| 17 | - this.gif.setRepeat(0); | 17 | + height: this.height, |
| 18 | - this.gif.setQuality(10); | 18 | + transparent: null, |
| 19 | - this.gif.start(); | 19 | + repeat: 0, |
| 20 | + setQuality: 10, | ||
| 21 | + }); | ||
| 20 | } | 22 | } |
| 21 | 23 | ||
| 22 | _addFrame(delay = 0) { | 24 | _addFrame(delay = 0) { |
| 23 | - this.gif.setDelay(delay); | 25 | + this.gif.addFrame(this.canvas.getContext(), { delay, copy: true }); |
| 24 | - this.gif.addFrame(this.canvas.getContext()); | ||
| 25 | } | 26 | } |
| 26 | 27 | ||
| 27 | - _render() { | 28 | + _render(callback) { |
| 28 | - this.gif.finish(); | 29 | + this.gif.on("finished", (blob) => { |
| 29 | - const byte = new Uint8Array(this.gif.out.data); | 30 | + callback(blob); |
| 30 | - | 31 | + }); |
| 31 | - return new Blob([byte], { type: "image/gif" }); | 32 | + this.gif.render(); |
| 32 | } | 33 | } |
| 33 | 34 | ||
| 34 | make() { | 35 | make() { |
| ... | @@ -67,7 +68,7 @@ export class GifGenerator { | ... | @@ -67,7 +68,7 @@ export class GifGenerator { |
| 67 | draw(); | 68 | draw(); |
| 68 | } else { | 69 | } else { |
| 69 | this.canvas.off("after:render", draw); | 70 | this.canvas.off("after:render", draw); |
| 70 | - resolve(this._render()); | 71 | + this._render(resolve); |
| 71 | } | 72 | } |
| 72 | } else { | 73 | } else { |
| 73 | this.canvas.remove( | 74 | this.canvas.remove( | ... | ... |
This diff could not be displayed because it is too large.
-
Please register or login to post a comment