私のアプリの一部には、トリミング、サイズ変更、フィルター、明るさなどの機能を備えた画像処理が多用されています。
画像操作が行われている間に GD や ImageMajick の進行状況を測定する方法はありますか? 次の方法でプログレスバーのクライアント側をレンダリングできるようにしたいと思います:-
- 操作に関する詳細はクライアント側で収集され、サーバーに投稿されます
- POST では、プロセス バーがクライアント側で 0% からレンダリングされます。
- サーバーはGDまたはImagickを実行し、画像を処理し、その間に進行状況の更新データをクライアントに返します。
- プログレス バーのプログレス幅は、返されたプログレス データを反映するために JavaScript で変更されます。
- 最終的に画像操作の進行が完了すると、新しいファイル名がクライアントに送り返され、タグの src が更新されます。
- 画像で onload イベントが検出され、最終的にレンダリングされると、プログレス バーが 100% に達し、画像がユーザーに表示されます。
GD または Imagick から進行状況データを取得する方法がない場合、だれかが「偽造」する方法を提案できますか?
POST の前に空のプログレス バーをレンダリングし、操作が行われ、クライアントが ajax 応答を受信したら 70% にアニメーション化することを検討しました。次に、onload イベントを検出して新しいイメージが完全に読み込まれると、最終的に 100% にアニメーション化されます。
これが私の唯一の選択肢である場合は、そうしてください。しかし、それは私にはかなり「不格好」に感じます。
何か案は?
編集- ImageMajick のコマンド ライン バージョンに進行状況を返すオプション「-monitor」があることを確認したので、これを 50 ミリ秒ごとにポーリングすることで何かをノックアップできる可能性があります。ただし、必要な操作に応じて GD/Imagick の両方を使用するため、GD に似たものはありますか。