为什么我的PNG字节不同?

时间:2017-01-28 17:40:27

标签: android png

我正在尝试阅读Android' 192x192 ic_launcher.png mipmap-xxxhdpi版本)的字节数。

以下是我正在做的事情:

Drawable drawable = ResourcesCompat.getDrawableForDensity
            (getResources(), R.mipmap.ic_launcher, 640, getTheme());

Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap();

ByteArrayOutputStream stream = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);

byte[] pngBytes = stream.toByteArray();

Log.d("TEST", "" + pngBytes[37]);

我在文件app\src\main\res\mipmap-xxxhdpi\ic_launcher.png上使用十六进制编辑器比较结果。

出于某种原因,pngBytes[37]处的字节与实际字节不同。之前的字节是相同的。

什么可能导致这样的事情?

1 个答案:

答案 0 :(得分:0)

  

由于某种原因,pngBytes [37]处的字节与实际字节不同。

嗯,当然。最有可能的是,会有很多不同之处。 compress()没有要求为您提供与您开始时相同的PNG文件,因为可以:

  • 不同的压缩级别
  • 不同的调色板(例如,构建过程可能会将pngquant - 样式技术应用于您的资源)
  • 不同的像素格式(索引与简单的ARGB)