1 /* 2 * Copyright 2011 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 #include "gm.h" 8 #include "sk_tool_utils.h" 9 #include "SkCanvas.h" 10 #include "SkData.h" 11 #include "SkImageEncoder.h" 12 #include "Resources.h" 13 14 namespace skiagm { 15 16 class EncodeGM : public GM { 17 public: 18 EncodeGM() {} 19 20 protected: 21 SkString onShortName() override { 22 return SkString("encode"); 23 } 24 25 SkISize onISize() override { 26 return SkISize::Make(1024, 600); 27 } 28 29 void onDraw(SkCanvas* canvas) override { 30 SkBitmap orig; 31 GetResourceAsBitmap("mandrill_512_q075.jpg", &orig); 32 sk_sp<SkData> pngData(sk_tool_utils::EncodeImageToData(orig, SkEncodedImageFormat::kPNG, 100)); 33 sk_sp<SkData> jpegData(sk_tool_utils::EncodeImageToData(orig, SkEncodedImageFormat::kJPEG, 100)); 34 35 sk_sp<SkImage> pngImage = SkImage::MakeFromEncoded(pngData); 36 sk_sp<SkImage> jpegImage = SkImage::MakeFromEncoded(jpegData); 37 canvas->drawImage(pngImage.get(), 0.0f, 0.0f); 38 canvas->drawImage(jpegImage.get(), 512.0f, 0.0f); 39 40 const char text[] = "Images should look identical."; 41 canvas->drawText(text, sizeof(text) - 1, 450.0f, 550.0f, SkPaint()); 42 } 43 44 private: 45 typedef GM INHERITED; 46 }; 47 48 DEF_GM( return new EncodeGM; ) 49 } 50