イメージを暗号化するプロジェクトを開発しました。プログラムは正常に動作しますが、148 KB の png 画像を暗号化すると 257 KB になります。同じファイルを復号化すると、古いイメージが返されますが、イメージは現在 219 KB です。サイズが約2倍になるのはなぜですか?
私のコード: jar内の画像を読み取れません
イメージを暗号化するプロジェクトを開発しました。プログラムは正常に動作しますが、148 KB の png 画像を暗号化すると 257 KB になります。同じファイルを復号化すると、古いイメージが返されますが、イメージは現在 219 KB です。サイズが約2倍になるのはなぜですか?
私のコード: jar内の画像を読み取れません
問題は暗号化/復号化の手順ではなく、PNG の読み取りと書き込みの方法です。
や のようなバイナリ ストリームを使用して PNG を読み書きする必要がFileInputStream
ありFileOutputStream
ます。バイナリを維持することで、データを変更しないようにします。
画像のサイズが変わる (148 KB -> 219 KB) 理由は、元のファイルのすべてのプロパティを保持していないためです。
例として、出力の幅、高さ、およびタイプは、次のステートメントでハードコーディングされます (元の画像から入力するのではなく)。
BufferedImage writeImage = new BufferedImage(512, 512, BufferedImage.TYPE_BYTE_GRAY);