【问题标题】:Original size bitmap using BitmapFactory decodeByteArray使用 BitmapFactory decodeByteArray 的原始大小位图
【发布时间】:2016-06-27 14:38:25
【问题描述】:

如何从字节数组构造原始大小的位图?

    byte[] imageAsBytes = Base64.decode(b64.getBytes(), Base64.DEFAULT);
    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inScaled = false;
    options.inSampleSize = 1;
    return BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length, options);

问题是创建的位图比原始位图小几倍(cca 3 倍)...

【问题讨论】:

  • 这对我来说看起来非常正确,假设 byte[] 具有正确的格式。由于您没有写任何关于问题所在的内容,因此您的问题没有答案。
  • 我正在使用 BitmapFactory.Options opt = new BitmapFactory.Options(); opt.inDensity = DisplayMetrics.DENSITY_DEFAULT; opt.inTargetDensity = DisplayMetrics.DENSITY_DEFAULT; opt.inScaled = 假;即使您使用的选项应该有效。尝试一下。如果它没有帮助,那么您的输入数据不正确(如原始位图大小)。
  • 很奇怪(至少对我而言),但这是关键:options.inDensity = DisplayMetrics.DENSITY_DEFAULT;谢谢@EmanuelMoecklin 你会发布答案以便我将其标记为正确吗?
  • 不客气。不要犹豫,将我的答案标记为正确;-)。

标签: java android android-bitmap bitmapfactory


【解决方案1】:

用途:

BitmapFactory.Options opt = new BitmapFactory.Options();
opt.inDensity = DisplayMetrics.DENSITY_DEFAULT;
opt.inTargetDensity = DisplayMetrics.DENSITY_DEFAULT;
opt.inScaled = false;

根据文档,它只能与 opt.inScaled=false 一起使用,但这毕竟是 Android ...... 我已经使用该代码很多年了,它对我来说非常有效。

【讨论】:

    猜你喜欢
    • 2017-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多