Index: tools/skimage_main.cpp |
diff --git a/tools/skimage_main.cpp b/tools/skimage_main.cpp |
index d98a6191c30a3201f689f0f18d9e2dd061ef734d..0d60f8afe96ddcd86a6a8141429a30402ea3a53b 100644 |
--- a/tools/skimage_main.cpp |
+++ b/tools/skimage_main.cpp |
@@ -111,7 +111,19 @@ static SkBitmap::Config gPrefConfig(SkBitmap::kNo_Config); |
SkAutoTUnref<skiagm::JsonExpectationsSource> gJsonExpectations; |
static bool write_bitmap(const char outName[], const SkBitmap& bm) { |
- return SkImageEncoder::EncodeFile(outName, bm, SkImageEncoder::kPNG_Type, 100); |
+ const SkBitmap* bmPtr; |
+ SkBitmap bm8888; |
+ if (bm.config() == SkBitmap::kA8_Config) { |
+ // Copy A8 into ARGB_8888, since our image encoders do not currently |
+ // support A8. |
djsollen
2013/10/03 16:54:28
is that a feature that we should support?
scroggo
2013/10/03 16:58:52
Possibly, although I'd set it at a low priority. N
reed1
2013/10/04 08:56:27
Perhaps the code at this level shouldn't know if i
scroggo
2013/10/04 19:45:53
They do report failure. I have a CL at https://cod
|
+ if (!bm.copyTo(&bm8888, SkBitmap::kARGB_8888_Config)) { |
+ return false; |
+ } |
+ bmPtr = &bm8888; |
+ } else { |
+ bmPtr = &bm; |
+ } |
+ return SkImageEncoder::EncodeFile(outName, *bmPtr, SkImageEncoder::kPNG_Type, 100); |
} |
/** |
@@ -495,7 +507,8 @@ static void decodeFileAndWrite(const char srcPath[], const SkString* writePath) |
} |
} |
- if (FLAGS_reencode) { |
+ // Do not attempt to re-encode A8, since our image encoders do not support encoding to A8. |
+ if (FLAGS_reencode && bitmap.config() != SkBitmap::kA8_Config) { |
// Encode to the format the file was originally in, or PNG if the encoder for the same |
// format is unavailable. |
SkImageDecoder::Format format = codec->getFormat(); |