如何使用BitmapFactory.decodeByteArray()捕获"png error"?



我在我的Android应用中具有此方法:

public void displayImage(ByteArrayOutputStream pngData) {
    if (pngData != null) {
        Bitmap image = BitmapFactory.decodeByteArray(pngData.toByteArray(), 0, pngData.size()); // even when this generates a log error...
        if (image != null) { // ...this still evaluates true
            this.imageView.setImageBitmap(image); // ...and then this displays an all-black image
        }
    }
}

有时,decodeByteArray失败,D/skia: ------ png error bad adaptive filter value出现在控制台中。但是,decodeByteArray仍然返回一个非NULL图像对象。然后setImageBitmap显示一个空的(全黑(图像。

在这种情况下,我想简单地跳过显示图像,但是我找不到一种测试此错误的方法。除了image != null外,我还尝试了测试image.getWidth() > 0image.getByteCount() > 0image.getDensity() > 0,但它们都对好或坏的图像进行了评估。有没有办法抓住这个?

的确,在不同的android设备上,相同的接口bitmap = bitmapfactory.decodefile(" xxx.png"(;会返回不同的结果。例如,对于损坏的png文件,我上传(https://www.dropbox.com/s/vkhw444444444444444444444444444444444444444444444444444444444444MT.PNG?dl = 0(,通常,移动设备将返回一个空位图,但是Nexus 6p返回不空的butmap,但却不为空的bitmap,您无法在应用程序上预览它。

相关内容

  • 没有找到相关文章

最新更新