問題タブ [node-imagemagick]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - node.js imagemagick の出力を AWS S3 にアップロードする
imagemagick で画像を操作してから S3 にアップロードする際に問題が発生しています。結果のオブジェクトは異なる (より大きな) サイズになり、破損しているように見えます。中間ステップを作成し、最初に出力をローカルの tmp ファイルに保存して読み返すと、結果をアップロードするとすべて問題ないようです。これは機能しないコードです。
fileWriteSync と fileReadSync のコメントを外すと、正しく動作します。
次の 2 つの場合の console.log(x) コマンドの出力: BAD:
バッファ c3 bf c3 98 c3 bf c3 a0 00 10 4a 46 49 46 00 01 01 01 00 01 00 01 00 00 c3 bf c3 9b 00 43 00 06 04 05 06 05 04 06 06 05 00 07 07 06a 08 09 09 ...>
良い:
バッファ ff d8 ff e0 00 10 4a 46 49 46 00 01 01 01 00 01 00 01 00 00 ff db 00 43 00 06 04 05 06 05 04 06 06 05 06 07 07 06 080 0a 10 0e 09a 09 0c 10 ...>
ご覧のとおり、良いものは適切な jpeg であり、悪いものには 4a 46 49 46 = JFIF のような同様のシーケンスが含まれていますが、一部のバイトがオフになっており、シフトがあり、悪いケースではファイル全体が約 20% 大きくなっています。 .
エンコーディングと何か関係がありますか?私はいくつかのことを試しましたが、この時点で迷っています。
ありがとう!
更新 #1: どうやら UTF エンコーディングに関連しているようですが、この場合に何が起こるかはまだ完全にはわかりません。どうやら c3 bf c3 98 c3 bf c3 a0 00 10 4a 46 49 46 00 01 は次の UTF エンコーディングです。
when FF D8 FF .. まさに私が期待していたものです。
一時ファイルなしでコードを機能させる方法を知っています ( var x = new Buffer(stdout);を var x = new Buffer(stdout, 'binary')に置き換えます)
ただし、ここで何が起こったのかを完全に理解しているとは言えません。これは Buffer() ラッピングなしで行う必要があります。どのコンポーネントに問題がありますか? イメージマジック? バッファ?
node.js - NodeJS gmが同期的に画像サイズを取得する
私は gm を使用しており、そのサイズに応じて画像を処理しようとしています。"size" getter にはコールバック関数が必要なため、次の行では size を使用できません。
私がやりたいことは次のようなものです:
次のサイズ変更メソッドで幅を使用したい。同期的にサイズを取得する方法や、コールバックが完了するのを待つ方法はありますか? ivar はできるだけ長く使用したくありません。
imagemagick - 画像から長方形を切り取る
私はpng画像を持っています。imagemagick を使用してこの画像から小さな四角形を切り取るにはどうすればよいですか? (画像に透明な穴をあける)
例えば:
ソース:
行き先: