From 32339bf975f80e5610c44cad608f230c448caf7f Mon Sep 17 00:00:00 2001 From: Danesh M Date: Thu, 16 Apr 2015 20:00:24 -0700 Subject: ScreenCap : Add jpeg support Change-Id: Ibd5050c79774d06f30b2f668160cdeca75f1bc58 (cherry picked from commit c1fd7edd8fc48f3308105df8cc845ec4b6652e17) --- cmds/screencap/screencap.cpp | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) (limited to 'cmds') diff --git a/cmds/screencap/screencap.cpp b/cmds/screencap/screencap.cpp index c469ae4..865a216 100644 --- a/cmds/screencap/screencap.cpp +++ b/cmds/screencap/screencap.cpp @@ -50,6 +50,7 @@ static void usage(const char* pname) "usage: %s [-hp] [-d display-id] [FILENAME]\n" " -h: this message\n" " -p: save the file as a png.\n" + " -j: save the file as a jpeg.\n" " -d: specify the display id to capture, default %d.\n" "If FILENAME ends with .png it will be saved as a png.\n" "If FILENAME is not given, the results will be printed to stdout.\n", @@ -112,13 +113,17 @@ int main(int argc, char** argv) const char* pname = argv[0]; bool png = false; + bool jpeg = false; int32_t displayId = DEFAULT_DISPLAY_ID; int c; - while ((c = getopt(argc, argv, "phd:")) != -1) { + while ((c = getopt(argc, argv, "pjhd:")) != -1) { switch (c) { case 'p': png = true; break; + case 'j': + jpeg = true; + break; case 'd': displayId = atoi(optarg); break; @@ -143,8 +148,14 @@ int main(int argc, char** argv) return 1; } const int len = strlen(fn); - if (len >= 4 && 0 == strcmp(fn+len-4, ".png")) { - png = true; + if (len >= 4) { + if (0 == strcmp(fn+len-4, ".png")) { + png = true; + } else if (0 == strcmp(fn+len-4, ".jpg")) { + jpeg = true; + } else if (len > 4 && 0 == strcmp(fn+len-5, ".jpeg")) { + jpeg = true; + } } } @@ -220,11 +231,12 @@ int main(int argc, char** argv) } if (base != NULL) { - if (png) { + if (png || jpeg) { const SkImageInfo info = SkImageInfo::Make(w, h, flinger2skia(f), kPremul_SkAlphaType); SkAutoTUnref data(SkImageEncoder::EncodeData(info, base, s*bytesPerPixel(f), - SkImageEncoder::kPNG_Type, SkImageEncoder::kDefaultQuality)); + (png ? SkImageEncoder::kPNG_Type : SkImageEncoder::kJPEG_Type), + SkImageEncoder::kDefaultQuality)); if (data.get()) { write(fd, data->data(), data->size()); } -- cgit v1.1