1

約 100 個のサブフォルダーを含む画像フォルダーがあり、それぞれに約 5 個の JPG があります。

ノードを使用してすべての画像をループし、最小寸法が 1200 になるようにサイズを変更しようとしています。アスペクト比。

私はノードを学んでいるので、プラットフォームについてはよくわかりませんが、JS UI 側にはかなり自信があります。

単一のJPGで機能するnpm walkerモジュール、npm gmモジュールを見つけたので、かなり簡単だと思いましたが、500以上の画像をループする際に問題が発生し、gm()コードがそれを実行することを決定していますループが終了した後、物事がクラッシュしています。

これが私のコードです...

https://runkit.com/nmiddleweek/58d40b478c992a00146502ba

(コードをインライン化しますか?)

これがコンソールエラーです...

これは、約450回の反復後にスローされます...

processing... /Users/nick.middleweek/Google Drive/Exp-CDN (For Upload)/UK/exp/EX-225/images/Salads/italian-bruchetta-3500px-1.jpg
Finished... /Users/nick.middleweek/Google Drive/Exp-CDN (For Upload)/UK/exp/EX-225/images/Salads/italian-bruchetta-3500px-1.jpg
Current file: /Users/nick.middleweek/Google Drive/Exp-CDN (For Upload)/UK/exp/EX-225/images/Salads/italian-caprese-3500px-1.jpg
processing... /Users/nick.middleweek/Google Drive/Exp-CDN (For Upload)/UK/exp/EX-225/images/Salads/italian-caprese-3500px-1.jpg
/Users/nick.middleweek/dev/github/exp-ex225-Carousel-with-images/node_modules/gm/lib/command.js:228
    proc.stdin.once('error', cb);
              ^

TypeError: Cannot read property 'once' of undefined
    at gm._spawn (/Users/nick.middleweek/dev/github/exp-ex225-Carousel-with-images/node_modules/gm/lib/command.js:228:15)
    at gm._exec (/Users/nick.middleweek/dev/github/exp-ex225-Carousel-with-images/node_modules/gm/lib/command.js:190:17)
    at gm.proto.(anonymous function) [as size] (/Users/nick.middleweek/dev/github/exp-ex225-Carousel-with-images/node_modules/gm/lib/getters.js:68:12)
    at resizeFile (/Users/nick.middleweek/dev/github/exp-ex225-Carousel-with-images/scripts/imageResizer.js:17:22)
    at Walker.<anonymous> (/Users/nick.middleweek/dev/github/exp-ex225-Carousel-with-images/scripts/imageResizer.js:67:21)
    at emitTwo (events.js:106:13)
    at Walker.emit (events.js:191:7)
    at /Users/nick.middleweek/dev/github/exp-ex225-Carousel-with-images/node_modules/walker/lib/walker.js:98:12
    at FSReqWrap.oncomplete (fs.js:117:15)
JEG-UPD-PRT0018:scripts nick.middleweek$

66行目のコメントを外しています...

66 行目のコメントを外して、処理されるファイルを強制的に 20 に減らすと、別の出力が得られ、gm モジュールが他の console.log で呼び出されます。下記参照...

.
.
.
Current file: /Users/nick.middleweek/Google Drive/Exp-CDN (For Upload)/UK/exp/EX-225/images/Hungarian/istock-537623284.jpg
Current file: /Users/nick.middleweek/Google Drive/Exp-CDN (For Upload)/UK/exp/EX-225/images/Hungarian/istock-537729484.jpg
Current file: /Users/nick.middleweek/Google Drive/Exp-CDN (For Upload)/UK/exp/EX-225/images/Ice Cream/istock-184348412.jpg
Current file: /Users/nick.middleweek/Google Drive/Exp-CDN (For Upload)/UK/exp/EX-225/images/Ice Cream/istock-493159114.jpg
Current file: /Users/nick.middleweek/Google Drive/Exp-CDN (For Upload)/UK/exp/EX-225/images/Ice Cream/istock-513809654.jpg
Current file: /Users/nick.middleweek/Google Drive/Exp-CDN (For Upload)/UK/exp/EX-225/images/Ice Cream/istock-519681814.jpg
Current file: /Users/nick.middleweek/Google Drive/Exp-CDN (For Upload)/UK/exp/EX-225/images/Ice Cream/istock-609908738.jpg
Current file: /Users/nick.middleweek/Google Drive/Exp-CDN (For Upload)/UK/exp/EX-225/images/Ice Cream/istock-625144420.jpg
Current file: /Users/nick.middleweek/Google Drive/Exp-CDN (For Upload)/UK/exp/EX-225/images/_just-eat/istock-496311554.jpg
Current file: /Users/nick.middleweek/Google Drive/Exp-CDN (For Upload)/UK/exp/EX-225/images/_just-eat/istock-457422997.jpg
Current file: /Users/nick.middleweek/Google Drive/Exp-CDN (For Upload)/UK/exp/EX-225/images/_just-eat/italian-bruchetta-3500px-1.jpg
Current file: /Users/nick.middleweek/Google Drive/Exp-CDN (For Upload)/UK/exp/EX-225/images/_just-eat/italian-caprese-3500px-1.jpg
Current file: /Users/nick.middleweek/Google Drive/Exp-CDN (For Upload)/UK/exp/EX-225/images/_just-eat/shutterstock_504548443.jpg
... is wider
... is wider
... is wider
... is wider
... is wider
... is wider
... is wider
... is wider
... is wider
done
done
done
done
done
done
done
done
done
JEG-UPD-PRT0018:scripts nick.middleweek$

ここで gm モジュールが実行され、ディスク上のいくつかの JPG のサイズが変更され、縦横比が維持されていることを確認できます。

しかし、奇妙なのは、ログに出てくる順序です...なぜNodeはこのようにバッチでコードを実行しているのでしょうか?

これは同期/非同期の問題ですか? また、どのように変更すれば...

a)。何百もの画像を処理できるようにします b)。画像を処理して、少なくともこの問題を解決して、正しく機能するようにしてください:-)

ヘルプとアイデアをお寄せいただきありがとうございます。

乾杯、ニック

4

0 に答える 0