ref: c55129ee55bad85c1748108ebef39d49e0c253cd
parent: 00ff678d914be8dfb8e426217e6565159d20dce9
author: cinap_lenrek <cinap_lenrek@centraldogma>
date: Thu Oct 6 16:54:56 EDT 2011
manpages for resize and rotate
--- a/sys/man/1/resample
+++ b/sys/man/1/resample
@@ -1,6 +1,6 @@
.TH RESAMPLE 1
.SH NAME
-resample \- resample a picture
+resample, resize - resample a picture
.SH SYNOPSIS
.B resample
[
@@ -12,11 +12,27 @@
] [
.I file
]
+.br
+.B resize
+[
+.B -x
+.I size
+] [
+.B -y
+.I size
+] [
+.I file
+]
.SH DESCRIPTION
.I Resample
+and
+.I Resize
resamples its input image (default standard input) to a new size.
-The image is decimated or interpolated using
-a Kaiser window.
+.I Resample
+uses a Kaiser window which produces high quality results and
+.I resize
+uses bilinear interpolation which is faster but produces more
+fuzzy images.
.PP
The size of the resampled image can be specified
with the
@@ -24,7 +40,8 @@
and
.B -y
options.
-An unadorned value sets the number of pixels of that dimension; a suffixed percent sign specifies a percentage.
+An unadorned value sets the number of pixels of that dimension; a
+suffixed percent sign specifies a percentage.
If only one of
.B -x
or
@@ -51,8 +68,8 @@
.PP
.SH SOURCE
.B /sys/src/cmd/resample.c
+.br
+.B /sys/src/cmd/resize.c
.SH "SEE ALSO
.IR crop (1),
.IR image (6)
-.SH BUGS
-Faster algorithms exist, but this implementation produces correct pictures.
--- /dev/null
+++ b/sys/man/1/rotate
@@ -1,0 +1,36 @@
+.TH ROTATE 1
+.SH NAME
+rotate - rotate or mirror a picture
+.SH SYNOPSIS
+.B rotate
+[
+.B -r
+.I degree
+] [
+.B -u |
+.B -l
+] [
+.I file
+]
+.SH DESCRIPTION
+.I Rotate
+reads its input image (default from standard input), applies the rotation
+or mirroring and outputs the transformed image in compressed
+plan9 bitmap format.
+.PP
+The option
+.B -r
+rotates the image clockwise in 90 degree steps by the
+.I degree
+argument.
+The options
+.B -u
+and
+.B -l
+mirror the image upside/down or left/right.
+.SH SOURCE
+.B /sys/src/cmd/rotate.c
+.SH "SEE ALSO
+.IR crop (1),
+.IR resample (1),
+.IR image (6)
--- a/sys/src/cmd/resize.c
+++ b/sys/src/cmd/resize.c
@@ -70,10 +70,25 @@
}
}
+enum {+ PERCENT = 0x80000000,
+};
+
+static int
+getsize(char *s)
+{+ int v;
+
+ v = strtol(s, &s, 10) & ~PERCENT;
+ if(*s == '%')
+ v |= PERCENT;
+ return v;
+}
+
void
usage(void)
{- sysfatal("Usage: %s [ -x width ] [ -y height ] [image]\n", argv0);+ sysfatal("Usage: %s [ -x width ] [ -y height ] [ file ]\n", argv0);}
void
@@ -86,11 +101,14 @@
xsize = ysize = 0;
ARGBEGIN{+ case 'a':
+ xsize = ysize = getsize(EARGF(usage()));
+ break;
case 'x':
- xsize = atoi(EARGF(usage()));
+ xsize = getsize(EARGF(usage()));
break;
case 'y':
- ysize = atoi(EARGF(usage()));
+ ysize = getsize(EARGF(usage()));
break;
default:
usage();
@@ -104,6 +122,10 @@
memimageinit();
if((im = readmemimage(fd)) == nil)
sysfatal("readmemimage: %r");+ if(xsize & PERCENT)
+ xsize = ((xsize & ~PERCENT) * Dx(im->r)) / 100;
+ if(ysize & PERCENT)
+ ysize = ((ysize & ~PERCENT) * Dy(im->r)) / 100;
if(xsize || ysize){if(ysize == 0)
ysize = (xsize * Dy(im->r)) / Dx(im->r);
--
⑨