Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 /* | |
| 2 * Copyright 2016 Google Inc. | |
| 3 * | |
| 4 * Use of this source code is governed by a BSD-style license that can be | |
| 5 * found in the LICENSE file. | |
| 6 */ | |
| 7 | |
| 8 #include "Resources.h" | |
| 9 #include "SkCodec.h" | |
| 10 #include "SkImageEncoder.h" | |
| 11 #include "Test.h" | |
| 12 | |
| 13 static inline bool almost_equal(uint8_t a, uint8_t b) { | |
| 14 return SkTAbs((int) a - (int) b) <= 30; | |
|
mtklein_C
2016/08/15 15:11:37
That's a pretty generous definition of almost equa
msarett
2016/08/15 19:31:08
Acknowledged.
| |
| 15 } | |
| 16 | |
| 17 DEF_TEST(Encode, r) { | |
| 18 SkBitmap orig; | |
| 19 bool result = GetResourceAsBitmap("mandrill_512_q075.jpg", &orig); | |
| 20 REPORTER_ASSERT(r, result); | |
| 21 sk_sp<SkData> pngData(SkImageEncoder::EncodeData(orig, SkImageEncoder::kPNG_ Type, 100)); | |
| 22 sk_sp<SkData> jpegData(SkImageEncoder::EncodeData(orig, SkImageEncoder::kJPE G_Type, 100)); | |
|
mtklein_C
2016/08/15 15:11:37
Does the quality setting cause us to go down any d
msarett
2016/08/15 19:31:08
The jpeg library handles the quality, so the code
| |
| 23 SkAutoTDelete<SkCodec> pngCodec = SkCodec::NewFromData(pngData.get()); | |
| 24 SkAutoTDelete<SkCodec> jpegCodec = SkCodec::NewFromData(jpegData.get()); | |
| 25 | |
| 26 SkImageInfo info = pngCodec->getInfo().makeColorType(kN32_SkColorType); | |
| 27 SkBitmap pngBitmap, jpegBitmap; | |
| 28 pngBitmap.allocPixels(info); | |
| 29 jpegBitmap.allocPixels(info); | |
| 30 pngCodec->getPixels(info, pngBitmap.getPixels(), pngBitmap.rowBytes()); | |
| 31 jpegCodec->getPixels(info, jpegBitmap.getPixels(), jpegBitmap.rowBytes()); | |
| 32 | |
| 33 for (int y = 0; y < pngBitmap.height(); y++) { | |
| 34 for (int x = 0; x < pngBitmap.width(); x++) { | |
| 35 SkPMColor pngPixel = *pngBitmap.getAddr32(x, y); | |
| 36 SkPMColor jpegPixel = *jpegBitmap.getAddr32(x, y); | |
| 37 REPORTER_ASSERT(r, almost_equal(SkGetPackedR32(pngPixel), SkGetPacke dR32(jpegPixel))); | |
| 38 REPORTER_ASSERT(r, almost_equal(SkGetPackedG32(pngPixel), SkGetPacke dG32(jpegPixel))); | |
| 39 REPORTER_ASSERT(r, almost_equal(SkGetPackedB32(pngPixel), SkGetPacke dB32(jpegPixel))); | |
| 40 REPORTER_ASSERT(r, almost_equal(SkGetPackedA32(pngPixel), SkGetPacke dA32(jpegPixel))); | |
|
mtklein_C
2016/08/15 15:11:37
Sort of silly to test JPEG's alpha?
msarett
2016/08/15 19:31:08
Acknowledged.
| |
| 41 } | |
| 42 } | |
| 43 } | |
| OLD | NEW |