私はjavaで単純な画像編集プログラムを作成しようとしています。編集中の画像に関するすべての情報を持つImageCanvas
オブジェクトを作成しました(基本プロパティ、適用されるエフェクトのリスト、BufferedImage
レイヤのリストなど)後で再び開くことができた。BufferedImagesを含むオブジェクトをシリアライズする方法
私は、Javaのdefualt Serializable
インターフェイスを使って、探していたものと同じものがあると思っていました。オブジェクト全体をファイルに書き込んで、後で再びメモリに読み込むことができました。ただし、ImageCanvas
にはArrayList<BufferedImage>
が含まれ、BufferedImage
にはシリアライズ可能ではありません(それ以外はすべてです)。
は、私はwriteObject()
とreadObject()
メソッドをオーバーライドすることが可能である知っているが、私はそうしたことがないとBufferedImage
を読み出し/書き込みするためにいくつかのカスタム方法を、Javaが他のすべてシリアライズ持ち、持っている任意の簡単な方法がある場合は、私が思っていましたディスクに?または、私が見落としているディスクにImageCanvas
オブジェクト全体を簡単に書き込むための他の方法がありますか?最終的に私は独自のカスタムイメージファイルタイプを実装するかもしれませんが、今はテスト中にファイルを一時的に保存するための素早く簡単な方法が必要でした(ImageCanvas
クラスが大きく変わるので更新したくありません私の最終的なファイルタイプは完成前です)。
どうすれば使えますか?メソッドはプライベートです。 – avicennasoftwarelabs
@avicennasoftwarelabs writeObjectとreadObjectを実装するだけで、メソッドがプライベートであっても、オブジェクトをシリアライズ/デシリアライズするときにこれらのメソッドを使用するようにJavaシリアル化が指示されます。 –
残念ながら、ImageIOのPNGデコーダにはバグがあります。つまり、読み込んだデータが書き込んだデータと同じではない(色が1つずれていることが多い) – mjaggard