1

Android 用の Steganography プロジェクトを実装しようとしています。ピクセル値を操作して、新しいビットマップを作成しました。ビットマップを携帯電話のメモリまたはメモリカードに保存すると、

//fo denotes File output Stream
Bitmap.compress(Bitmap.CompressFormat.JPEG,100,fo);
//OR
Bitmap.compress(Bitmap.CompressFormat.PNG,100,fo);   

getPixels(); を使用してピクセルにアクセスしてみます。

値は、操作されたビットマップではなく、元のビットマップに戻されます。これがなぜなのか誰にもわかりますか?

4

2 に答える 2

1

JPEG は不可逆であり、圧縮時にピクセル値が変わる可能性があります。色を保持したい場合は PNG を使用してください。

于 2013-01-26T04:56:36.873 に答える
1
File myDir=new File("/sdcard/saved_images");
myDir.mkdirs();
Random generator = new Random();
int n = 10000;
n = generator.nextInt(n);
String fname = "Image-"+ n +".jpg";
File file = new File (myDir, fname);
if (file.exists ()) file.delete (); 
try {
       FileOutputStream out = new FileOutputStream(file);
       finalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
       out.flush();
       out.close();

} catch (Exception e) {
       e.printStackTrace();
}

この回答を見てください https://stackoverflow.com/a/7887114/964741

于 2011-11-27T05:27:08.450 に答える