3

ノードimagemagickにいくつか問題があります。特定の画像のアップロードで、次のエラーが発生します。

/node_modules/imagemagick/imagemagick.js:126
    prop[comps[0].trim().toLowerCase()] = comps[1].trim()

TypeError: Cannot set property '20' of undefined

それが何を意味するのか分かりますか?一部の画像は正常に機能しますが、他の画像はこれを行います。この場合、それは「icon_75.png」という名前のpng画像です。他のpngは正常に機能し、すべて同じプロセスで作成されます。

ヒストグラムの番号付きの行の束を含む画像情報を解析しているようです-正当な情報のようです。

'  Histogram:',
'       973: (107,108, 52) #6B6C34 srgb(107,108,52)',
'        70: (108,105, 55) #6C6937 srgb(108,105,55)',
'         2: (110,107, 58) #6E6B3A srgb(110,107,58)',
'         2: (112,109, 60) #706D3C srgb(112,109,60)',
'         1: (114,111, 63) #726F3F srgb(114,111,63)',
'         1: (115,113, 65) #737141 srgb(115,113,65)',
'        14: (116,117, 64) #747540 srgb(116,117,64)',
'         1: (117,114, 68) #757244 srgb(117,114,68)',
'         1: (120,117, 71) #787547 srgb(120,117,71)',
'         1: (121,119, 73) #797749 srgb(121,119,73)',
'        18: (124,121, 76) #7C794C srgb(124,121,76)',
'         6: (125,126, 77) #7D7E4D srgb(125,126,77)',
'         2: (130,127, 85) #827F55 srgb(130,127,85)',
'        20: (134,135, 89) #868759 srgb(134,135,89)',

私のより重要な質問は、クラッシュを回避する方法です。クロップコールをcatchブロックにカプセル化しようとしましたが、機能しません。アプリがダウンするのを防ぐ方法について何か提案はありますか?

try {
  imageMagick.crop({
    width: opts.width,
    height: opts.height,
    srcPath: this.uploadDir + "/" + that.name,
    dstPath: this.uploadDir + "/" + version + "_" + that.name
  }, function(err, stdout, stderr) {
    if(err)
      console.log(err)
    else {
      console.log('Creating ' + version);
      ...
    }
  });
}
catch(e) {
  console.log('Whao');
}
4

1 に答える 1

1

そのため、ImageMagickの一部のバージョンでは、識別出力が変更されているようです。その出力にもバグの可能性があります。

私はここでImageMagickのバグを報告しました:http://www.imagemagick.org/discourse-server/viewtopic.php? f = 3&t = 22256

そしてここでノードImageMagickのバグhttps://github.com/rsms/node-imagemagick/issues/67

この記事を書いている時点ではどちらにも答えがないので、修正を進めました。

node_modules / imagemagick / imagemagick.jsファイルを編集し、parseIdentify関数を探す必要があります-コメントアウトして、これを使用してください:https ://gist.github.com/4066782

于 2012-11-13T16:30:43.390 に答える