0

私はJavaで画像編集アプリを開発していますが、もちろん元に戻す機能が必要です。私は何をしました.... bufferedimage、前の状態への参照、次の状態への参照を含む State クラスを作成しました。次に、状態のリンクされたリストを形成し、元に戻すボタンとやり直しボタンをクリックして前後にトラバースします。だから私は何をしたい.... bufferedimage があまりにも多くのメモリを占有していることに気付きました...中 (デスクトップ) サイズの画像だけで 4 MB とします。より良いアプローチを提案できますか???

ありがとうございました!!

4

1 に答える 1

4

状態がメモリを使いすぎる場合は、 Mementoパターンの代わりにCommandパターンを使用する必要があります。

UndoRedoオブジェクトのリンクリストが作成されます。各オブジェクトには、undoコマンドまたはREDOコマンドのいずれかを実行するのに十分な情報が含まれています。

コマンドを整理するには、さまざまな方法が必要です。

  • 双方向コマンドがあります。たとえば、ピクセルの色を変更する場合、コマンドを両方向で実行できるように、操作には元の色と新しい色の両方が含まれている必要があります。
  • 元に戻すブロックごとに2つの異なるコマンドを使用します。画像のすべてを変更する一部のコマンド(元の画像に関する情報が失われるスケールや明るさの変更など)では、やり直すコマンドと元に戻すコマンドの両方を保存する必要があります。それは完全な画像であり、メモリフットプリントはあなたがすでに持っているものと同様になります。
于 2011-08-18T09:19:07.440 に答える