【问题标题】:Saving a Bitmap in Android在 Android 中保存位图
【发布时间】:2012-01-07 04:35:46
【问题描述】:

我正在尝试为 Android 实施隐写术项目。我已经操纵了像素值并创建了一个新的位图。现在,当我使用

将位图存储到手机内存或存储卡中时
//fo denotes File output Stream
Bitmap.compress(Bitmap.CompressFormat.JPEG,100,fo);
//OR
Bitmap.compress(Bitmap.CompressFormat.PNG,100,fo);   

并尝试使用 getPixels() 访问像素;

这些值被恢复为原始位图,即,而不是被操纵的位图。 谁能弄清楚这是为什么?

【问题讨论】:

    标签: java android bitmap bit-manipulation steganography


    【解决方案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

    【讨论】:

    • 实际创建文件没有问题,但是位图的像素值发生变化,有没有办法防止?
    • 例如,红色、蓝色和绿色的位图值为 8、8、15,但保存位图后,值为 16 16 16。谁能告诉我如何防止这种情况发生?
    【解决方案2】:

    JPEG 是有损的,它可以在压缩时改变像素值。如果您想保留颜色,请使用 PNG。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-11
      • 2015-04-23
      相关资源
      最近更新 更多