diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/images/SkImageDecoder_libpng.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/images/SkImageDecoder_libpng.cpp b/src/images/SkImageDecoder_libpng.cpp index e942f21c78..fc220eae1a 100644 --- a/src/images/SkImageDecoder_libpng.cpp +++ b/src/images/SkImageDecoder_libpng.cpp @@ -532,9 +532,13 @@ bool SkPNGImageDecoder::getBitmapConfig(png_structp png_ptr, png_infop info_ptr, *configp = SkBitmap::kARGB_8888_Config; } } else { - if (*configp != SkBitmap::kRGB_565_Config && - *configp != SkBitmap::kARGB_4444_Config && - *configp != SkBitmap::kA8_Config) { + if (SkBitmap::kA8_Config == *configp) { + if (k8BitGray_SrcDepth != srcDepth) { + // Converting a non grayscale image to A8 is not currently supported. + *configp = SkBitmap::kARGB_8888_Config; + } + } else if (*configp != SkBitmap::kRGB_565_Config && + *configp != SkBitmap::kARGB_4444_Config) { *configp = SkBitmap::kARGB_8888_Config; } } |