mirror of
https://github.com/webmproject/libwebp.git
synced 2024-12-25 13:18:22 +01:00
vwebp: add a -fit option
This is to make the initial window be rescaled in case the image dimension is too large to fit the display. BUG=webp:433 Change-Id: Ib04c12962bc8c26e74c8a6193829214da636ebde
This commit is contained in:
parent
1326988d10
commit
cbd23dd5b4
1
README
1
README
@ -405,6 +405,7 @@ Options are:
|
||||
-dither <int> dithering strength (0..100), default=50
|
||||
-noalphadither disable alpha plane dithering
|
||||
-usebgcolor .. display background color
|
||||
-fit ......... downscale large images to preserve aspect ratio
|
||||
-mt .......... use multi-threading
|
||||
-info ........ print info
|
||||
-h ........... this help message
|
||||
|
@ -72,6 +72,7 @@ static struct {
|
||||
WebPIterator prev_frame;
|
||||
WebPChunkIterator iccp;
|
||||
int viewport_width, viewport_height;
|
||||
int fit; // if true, rescale large images to preserve aspect ratio.
|
||||
} kParams;
|
||||
|
||||
static void ClearPreviousPic(void) {
|
||||
@ -418,8 +419,9 @@ static void HandleDisplay(void) {
|
||||
}
|
||||
|
||||
static void StartDisplay(void) {
|
||||
const int width = kParams.canvas_width;
|
||||
const int height = kParams.canvas_height;
|
||||
int width = kParams.canvas_width;
|
||||
int height = kParams.canvas_height;
|
||||
int screen_width, screen_height;
|
||||
// TODO(webp:365) GLUT_DOUBLE results in flickering / old frames to be
|
||||
// partially displayed with animated webp + alpha.
|
||||
#if defined(__APPLE__) || defined(_WIN32)
|
||||
@ -427,6 +429,18 @@ static void StartDisplay(void) {
|
||||
#else
|
||||
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);
|
||||
#endif
|
||||
screen_width = glutGet(GLUT_SCREEN_WIDTH);
|
||||
screen_height = glutGet(GLUT_SCREEN_HEIGHT);
|
||||
if ((width > screen_width || height > screen_height) && kParams.fit) {
|
||||
if (width > screen_width) {
|
||||
height = (height * screen_width + width - 1) / width;
|
||||
width = screen_width;
|
||||
}
|
||||
if (height > screen_height) {
|
||||
width = (width * screen_height + height - 1) / height;
|
||||
height = screen_height;
|
||||
}
|
||||
}
|
||||
glutInitWindowSize(width, height);
|
||||
glutCreateWindow("WebP viewer");
|
||||
glutDisplayFunc(HandleDisplay);
|
||||
@ -454,6 +468,7 @@ static void Help(void) {
|
||||
" -dither <int> dithering strength (0..100), default=50\n"
|
||||
" -noalphadither disable alpha plane dithering\n"
|
||||
" -usebgcolor .. display background color\n"
|
||||
" -fit ......... downscale large images to preserve aspect ratio\n"
|
||||
" -mt .......... use multi-threading\n"
|
||||
" -info ........ print info\n"
|
||||
" -h ........... this help message\n"
|
||||
@ -482,6 +497,8 @@ int main(int argc, char *argv[]) {
|
||||
kParams.use_color_profile = 1;
|
||||
// Background color hidden by default to see transparent areas.
|
||||
kParams.draw_anim_background_color = 0;
|
||||
// By default don't rescale too-large input images to preserve aspect ratio.
|
||||
kParams.fit = 0;
|
||||
|
||||
for (c = 1; c < argc; ++c) {
|
||||
int parse_error = 0;
|
||||
@ -498,6 +515,8 @@ int main(int argc, char *argv[]) {
|
||||
config->options.alpha_dithering_strength = 0;
|
||||
} else if (!strcmp(argv[c], "-usebgcolor")) {
|
||||
kParams.draw_anim_background_color = 1;
|
||||
} else if (!strcmp(argv[c], "-fit")) {
|
||||
kParams.fit = 1;
|
||||
} else if (!strcmp(argv[c], "-dither") && c + 1 < argc) {
|
||||
config->options.dithering_strength =
|
||||
ExUtilGetInt(argv[++c], 0, &parse_error);
|
||||
|
@ -1,5 +1,5 @@
|
||||
.\" Hey, EMACS: -*- nroff -*-
|
||||
.TH VWEBP 1 "July 20, 2018"
|
||||
.TH VWEBP 1 "May 28, 2019"
|
||||
.SH NAME
|
||||
vwebp \- decompress a WebP file and display it in a window
|
||||
.SH SYNOPSIS
|
||||
@ -42,6 +42,10 @@ to smooth the gradients. This flag will prevent this dithering.
|
||||
Fill transparent areas with the bitstream's own background color instead of
|
||||
checkerboard only. Default is white for non-animated images.
|
||||
.TP
|
||||
.B \-fit
|
||||
If an image is larger than the display dimension, rescale it to preserve
|
||||
the aspect ratio.
|
||||
.TP
|
||||
.B \-mt
|
||||
Use multi-threading for decoding, if possible.
|
||||
.TP
|
||||
|
Loading…
Reference in New Issue
Block a user