ag-psd 20.1.0 → 20.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ag-psd",
3
- "version": "20.1.0",
3
+ "version": "20.1.2",
4
4
  "description": "Library for reading and writing PSD files",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist-es/index.js",
@@ -36,6 +36,7 @@
36
36
  "devDependencies": {
37
37
  "@types/mocha": "^10.0.6",
38
38
  "@types/node": "^18.11.18",
39
+ "@types/pako": "^2.0.3",
39
40
  "browserify": "^17.0.0",
40
41
  "canvas": "^2.11.0",
41
42
  "chai": "^4.3.7",
@@ -47,6 +48,6 @@
47
48
  "dependencies": {
48
49
  "@types/base64-js": "^1.3.0",
49
50
  "base64-js": "^1.5.1",
50
- "zlib": "^1.0.5"
51
+ "pako": "^2.1.0"
51
52
  }
52
53
  }
package/perf.js ADDED
@@ -0,0 +1,12 @@
1
+ require('ts-node').register({});
2
+ const { readPsd } = require('./src/index.ts');
3
+ require('./src/initializeCanvas.ts');
4
+ const { readFileSync } = require('fs');
5
+
6
+ const buffer = readFileSync('D:\\Downloads\\8K Painting.psd');
7
+
8
+ const start = performance.now();
9
+ const psd = readPsd(buffer);
10
+ const end = performance.now();
11
+
12
+ console.log('time', end - start, 'ms', psd.width, psd.height);
@@ -3596,6 +3596,7 @@ addHandler(
3596
3596
  const version = readInt32(reader);
3597
3597
  const id = readPascalString(reader, 1);
3598
3598
  const name = readUnicodeString(reader);
3599
+
3599
3600
  const fileType = readSignature(reader).trim(); // ' ' if empty
3600
3601
  const fileCreator = readSignature(reader).trim(); // ' ' or '\0\0\0\0' if empty
3601
3602
  const dataSize = readLength64(reader);
package/src/helpers.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { fromByteArray } from 'base64-js';
2
- import { deflateSync } from 'zlib';
2
+ import { deflate as deflateSync } from 'pako';
3
3
  import { Layer, BlendMode, LayerColor, PixelData, PixelArray } from './psd';
4
4
 
5
5
  export const MOCK_HANDLERS = false;
@@ -275,7 +275,7 @@ addHandler(
275
275
  (reader, target, left) => {
276
276
  target.alphaChannelNames = [];
277
277
 
278
- while (left()) {
278
+ while (left() > 0) {
279
279
  const value = readPascalString(reader, 1);
280
280
  target.alphaChannelNames.push(value);
281
281
  }
@@ -293,7 +293,7 @@ addHandler(
293
293
  (reader, target, left) => {
294
294
  target.alphaChannelNames = [];
295
295
 
296
- while (left()) {
296
+ while (left() > 0) {
297
297
  target.alphaChannelNames.push(readUnicodeString(reader));
298
298
  }
299
299
  },
@@ -482,7 +482,7 @@ addHandler(
482
482
  (reader, target, left) => {
483
483
  target.layersGroup = [];
484
484
 
485
- while (left()) {
485
+ while (left() > 0) {
486
486
  target.layersGroup.push(readUint16(reader));
487
487
  }
488
488
  },
@@ -499,7 +499,7 @@ addHandler(
499
499
  (reader, target, left) => {
500
500
  target.layerGroupsEnabledId = [];
501
501
 
502
- while (left()) {
502
+ while (left() > 0) {
503
503
  target.layerGroupsEnabledId.push(readUint8(reader));
504
504
  }
505
505
  },
@@ -1368,7 +1368,7 @@ addHandler(
1368
1368
  if (key === 'mani') {
1369
1369
  checkSignature(reader, 'IRFR');
1370
1370
  readSection(reader, 1, left => {
1371
- while (left()) {
1371
+ while (left() > 0) {
1372
1372
  checkSignature(reader, '8BIM');
1373
1373
  const key = readSignature(reader);
1374
1374
 
@@ -7,7 +7,7 @@ function createCanvasFromData(data: Uint8Array) {
7
7
 
8
8
  try {
9
9
  const context = canvas.getContext('2d')!;
10
- const imageData = decodeJpeg(data, (w, h) => context.createImageData(w, h));
10
+ const imageData = decodeJpeg(data, (w, h) => context.createImageData(w, h) as any);
11
11
  canvas.width = imageData.width;
12
12
  canvas.height = imageData.height;
13
13
  context.putImageData(imageData, 0, 0);
@@ -18,8 +18,8 @@ function createCanvasFromData(data: Uint8Array) {
18
18
  return canvas;
19
19
  }
20
20
 
21
- initializeCanvas(createCanvas, createCanvasFromData);
21
+ initializeCanvas(createCanvas as any, createCanvasFromData as any);
22
22
 
23
23
  export function initialize() {
24
- initializeCanvas(createCanvas, createCanvasFromData);
24
+ initializeCanvas(createCanvas as any, createCanvasFromData as any);
25
25
  }
package/src/psdReader.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { inflateSync } from 'zlib';
1
+ import { inflate as inflateSync } from 'pako';
2
2
  import { Psd, Layer, ColorMode, SectionDividerType, LayerAdditionalInfo, ReadOptions, LayerMaskData, Color, PatternInfo, GlobalLayerMaskInfo, RGB, PixelData, PixelArray } from './psd';
3
3
  import { resetImageData, offsetForChannel, decodeBitmap, createImageData, toBlendMode, ChannelID, Compression, LayerMaskFlags, MaskParams, ColorSpace, RAW_IMAGE_DATA, largeAdditionalInfoKeys, imageDataToCanvas } from './helpers';
4
4
  import { infoHandlersMap } from './additionalInfo';
@@ -234,7 +234,7 @@ export function readPsd(reader: PsdReader, readOptions: ReadOptions = {}) {
234
234
 
235
235
  // const numbers: number[] = [];
236
236
  // console.log('color mode', left());
237
- // while (left()) {
237
+ // while (left() > 0) {
238
238
  // numbers.push(readUint32(reader));
239
239
  // }
240
240
  // console.log('color mode', numbers);
@@ -245,7 +245,7 @@ export function readPsd(reader: PsdReader, readOptions: ReadOptions = {}) {
245
245
 
246
246
  // image resources
247
247
  readSection(reader, 1, left => {
248
- while (left()) {
248
+ while (left() > 0) {
249
249
  const sigOffset = reader.offset;
250
250
  let sig = '';
251
251
 
@@ -431,7 +431,7 @@ function readLayerRecord(reader: PsdReader, psd: Psd, options: ReadOptionsExt) {
431
431
  /*const blendingRanges =*/ readLayerBlendingRanges(reader);
432
432
  layer.name = readPascalString(reader, 4);
433
433
 
434
- while (left()) {
434
+ while (left() > 0) {
435
435
  readAdditionalLayerInfo(reader, layer, psd, options);
436
436
  }
437
437
  });
@@ -485,7 +485,7 @@ function readLayerBlendingRanges(reader: PsdReader) {
485
485
  const compositeGraphBlendDestinationRange = readUint32(reader);
486
486
  const ranges = [];
487
487
 
488
- while (left()) {
488
+ while (left() > 0) {
489
489
  const sourceRange = readUint32(reader);
490
490
  const destRange = readUint32(reader);
491
491
  ranges.push({ sourceRange, destRange });