summaryrefslogtreecommitdiffstats
path: root/cmds
diff options
context:
space:
mode:
authorDanesh M <daneshm90@gmail.com>2015-04-16 20:00:24 -0700
committerSteve Kondik <steve@cyngn.com>2015-10-26 21:55:37 -0700
commit32339bf975f80e5610c44cad608f230c448caf7f (patch)
treea24aacab79c85392f6d390667cf167a316180847 /cmds
parent7591ee7117e713758c90da660e85308780c1b321 (diff)
downloadframeworks_base-32339bf975f80e5610c44cad608f230c448caf7f.zip
frameworks_base-32339bf975f80e5610c44cad608f230c448caf7f.tar.gz
frameworks_base-32339bf975f80e5610c44cad608f230c448caf7f.tar.bz2
ScreenCap : Add jpeg support
Change-Id: Ibd5050c79774d06f30b2f668160cdeca75f1bc58 (cherry picked from commit c1fd7edd8fc48f3308105df8cc845ec4b6652e17)
Diffstat (limited to 'cmds')
-rw-r--r--cmds/screencap/screencap.cpp22
1 files changed, 17 insertions, 5 deletions
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<SkData> 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());
}