画像内の文字列をエンコードする画像暗号化プログラムを作成しています。
私は.png
画像を扱っています。
エンコードは次の手順で実行されます。
- イメージのピクセルは、getRGB() を使用して 2D 配列に格納されます。
- 文字列内の各文字はバイナリ形式に変換され、配列に格納されます。
- ピクセルのすべてのバイトの LSB は
4byte
、文字のバイナリ形式のすべてのビットに従って変更されます。最初のバイトの LSB は 0 番目の位置、2 番目のバイトの LSB は 8 番目の位置、3 番目のバイトは 16 番目の位置、4 番目のバイトは 24 番目の位置です。 - エンコード後、変更されたピクセルは setRGB() メソッドを使用して元の画像に書き込まれます。
デコードの場合:
- getRGB(); を使用して画像のピクセルを読み取ります。
- データの取得には、逆のエンコード方法が適用されます。
8 ビットごとに、デコードされたビットを含む int が文字に変換されます。次に、他の文字のゼロで初期化されます。
if((pixels[i][j] & change)==1) { tempText|=1 ; } tempText<<=1;
変化は反復に応じて 1,256,65536,16777216 です。0 番目、8 番目、16 番目、24 番目のビットが 1 です。
コードは正常にコンパイルされます。しかし、デコードした後、出力に奇妙なASCII文字が表示されます。この理由を見つけることができませんでした。だから私はここで専門家に相談しています。