[解決済み] Node.js: ImageMagick を使わずに画像のリサイズを行う。
質問
Node.js (+ express 4)で、ユーザーがサーバーにアップロードしてプロフィール画像を設定できるウェブアプリを開発しています。私たちはすでにファイルの mimetype と最大ファイルサイズを制限しており、ユーザーは 200KB 以上の png または jpeg 画像をアップロードすることができません。
問題は、ページの読み込みを向上させ、ディスクのスペースを節約するために、アップロードされた画像の解像度を 200x200 にリサイズ (サーバー側) したいということです。いくつかの調査の後、すべての回答は ImageMagick または GraphicsMagick に基づいた任意のモジュールを使用することを指摘しました。
しかしながら、単純な画像のリサイズを行うためにImageMagick/GraphicsMagickをインストールしなければならないことは、私にとってあまりにも過剰なことのように思われます。
編集してください。 受理された解決策を シャープ に変更しました。以前の解決策(lwip)はもう保守されていません。すべてのフィードバックに感謝します。
どのように解決するのですか?
私は、次のように投票します。 シャープ :
sharp('input.jpg')
.resize(200, 200)
.toFile('ouput.jpg', function(err) {
// output.jpg is a 200 pixels wide and 200 pixels high image
// containing a scaled and cropped version of input.jpg
});
速いんです。 imagemagickベースの最速ノードバインディングよりも6倍速いです。 で、非常に少ないメモリで動作します。 おそらく10倍以下 へのシャープなリンク。 libvips を直接リンクします。外部プログラムへのシェルアウトが不要で、ライブラリ自体も *magick よりも高速かつ効率的にこのタスクを実行できます。ストリーム、バッファ、ファイルシステムの入出力、色管理、透明度、プロミス、オーバーレイ、WebP、SVG などの便利な機能をサポートしています。
シャープ0.20では、npmはほとんどのプラットフォームでコンパイル済みの完全なバイナリを自動的にダウンロードするので、node-gypは必要ありません。入力するだけです。
npm install sharp
または
yarn add sharp
そして、お出かけください。
関連
-
[解決済み] Node.jsのプログラムにコマンドライン引数を渡すにはどうしたらいいですか?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] Node.jsで終了する方法
-
[解決済み] Node.jsでファイルを書き込む
-
[解決済み] div' コンテナに合わせて画像を自動リサイズするにはどうしたらいいですか?
-
[解決済み] Node.jsアプリケーションをデバッグするにはどうすればよいですか?
-
[解決済み] div 内の画像を縦に並べる方法
-
[解決済み] Node.jsのmodule.exportsの目的と使い方を教えてください。
-
[解決済み] Node.jsで環境変数を読み込む
-
[解決済み] Node.jsでファイル/ディレクトリが存在するかどうかを同期的にチェックする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Matlabでアフィン変換
-
[解決済み] アニメーションGIFの代替品にはどんなものがありますか?[クローズド]
-
[解決済み] 画像比較 - 高速アルゴリズム
-
[解決済み] イメージからDockerfileを生成するには?
-
[解決済み】JPGとJPEGの画像フォーマット比較
-
[解決済み】Kubernetesにイメージの再引き取りを強制する方法は?
-
[解決済み】PNG vs. GIF vs. JPEG vs. SVGの異なるユースケースとは?[クローズド]
-
[解決済み] OpenCVで画像の類似性をチェックする
-
[解決済み] Facebookでプレビューとして表示されるWebサイトの画像を設定するにはどうすればよいですか?
-
[解決済み] IrfanViewで透過画像の背景を設定する