Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8)

Unified Diff: tests/EncodeTest.cpp

Issue 2245453002: Fix WIC encoder to support kJPEG_Type (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/ports/SkImageEncoder_WIC.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/EncodeTest.cpp
diff --git a/tests/EncodeTest.cpp b/tests/EncodeTest.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..e100670343345249d52c4b9d21ab02ccaeee5b97
--- /dev/null
+++ b/tests/EncodeTest.cpp
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2016 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "Resources.h"
+#include "SkCodec.h"
+#include "SkImageEncoder.h"
+#include "Test.h"
+
+static inline bool almost_equal(uint8_t a, uint8_t b) {
+ 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.
+}
+
+DEF_TEST(Encode, r) {
+ SkBitmap orig;
+ bool result = GetResourceAsBitmap("mandrill_512_q075.jpg", &orig);
+ REPORTER_ASSERT(r, result);
+ sk_sp<SkData> pngData(SkImageEncoder::EncodeData(orig, SkImageEncoder::kPNG_Type, 100));
+ sk_sp<SkData> jpegData(SkImageEncoder::EncodeData(orig, SkImageEncoder::kJPEG_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
+ SkAutoTDelete<SkCodec> pngCodec = SkCodec::NewFromData(pngData.get());
+ SkAutoTDelete<SkCodec> jpegCodec = SkCodec::NewFromData(jpegData.get());
+
+ SkImageInfo info = pngCodec->getInfo().makeColorType(kN32_SkColorType);
+ SkBitmap pngBitmap, jpegBitmap;
+ pngBitmap.allocPixels(info);
+ jpegBitmap.allocPixels(info);
+ pngCodec->getPixels(info, pngBitmap.getPixels(), pngBitmap.rowBytes());
+ jpegCodec->getPixels(info, jpegBitmap.getPixels(), jpegBitmap.rowBytes());
+
+ for (int y = 0; y < pngBitmap.height(); y++) {
+ for (int x = 0; x < pngBitmap.width(); x++) {
+ SkPMColor pngPixel = *pngBitmap.getAddr32(x, y);
+ SkPMColor jpegPixel = *jpegBitmap.getAddr32(x, y);
+ REPORTER_ASSERT(r, almost_equal(SkGetPackedR32(pngPixel), SkGetPackedR32(jpegPixel)));
+ REPORTER_ASSERT(r, almost_equal(SkGetPackedG32(pngPixel), SkGetPackedG32(jpegPixel)));
+ REPORTER_ASSERT(r, almost_equal(SkGetPackedB32(pngPixel), SkGetPackedB32(jpegPixel)));
+ REPORTER_ASSERT(r, almost_equal(SkGetPackedA32(pngPixel), SkGetPackedA32(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.
+ }
+ }
+}
« no previous file with comments | « src/ports/SkImageEncoder_WIC.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698