この質問は、おそらく描画システム全般に当てはまります。元に戻す機能が PS でどのように実装されているのか疑問に思っていました。プログラムは、各操作の前にキャンバスのスナップショットを作成しますか? もしそうなら、これは巨大なメモリ要件につながりませんか? Command パターンを調べましたが、これが描画にどのように適用されるかはよくわかりません。
よろしく、メノ
コマンドパターンと呼びます。あらゆる種類のエディターに役立つように実装するのは簡単です。
Photoshop は、元の画像に積み重ねられた変換を適用します。ワンオペレーションワンコマンド。元に戻すと、変換が適用されなくなります。したがって、元のバージョンと最新のバージョンを保持するだけですが、パフォーマンスのために最新のいくつかのバージョンをキャッシュする可能性があると思います.
一部の操作は元に戻すことができず、毎回イメージ全体のスナップショットを作成することは問題外であると言うので、私が見ることができる他の唯一の代替手段はデルタのスタックです. デルタは、操作前に変更されたピクセルを含む一連のマスクです。もちろん、多くの操作は元に戻すことができるため、デルタを最適化できます。
Adobe Photoshop で がどのように実装されているかはわかりませんが、 Apple Shake合成アプリケーションundo
内の Paint ノードについて説明するのは非常に簡単です。
x
に (10 だと思います)、現在の画像がメモリにキャッシュされます。これには 2 つの問題があります。
さて、第 3 の問題があります。Shake はひどくバグが多く、多くの領域で実装が不十分であり、Paint ノードはその 1 つです。したがって、これがどれほど優れた実装であるかはわかりませんが、Photoshop がそうであるとは想像できません。あまりにも似ていません (はるかに最適化されていますが)。
Photoshopは、履歴を使用してアクションを追跡します。これらは、いつでも履歴に戻ることができるため、元に戻す機能としても機能します。設定で履歴のサイズを設定できます。
また、 Adobe Version Cueを、元に戻すまたはバージョンを振り返るためのツールとして検討することをお勧めします。これは、その唯一の目的のためにスイートに組み込まれています。http://en.wikipedia.org/wiki/Adobe_Version_Cue