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 |