manpages for resize and rotate

This commit is contained in:
cinap_lenrek 2011-10-06 20:54:56 +02:00
parent d58a409a12
commit 65e50862cf
3 changed files with 84 additions and 9 deletions

View file

@ -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 @@ resample \- resample a picture
] [
.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 @@ with the
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 @@ To uncompress the image or change the pixel format, use
.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.

36
sys/man/1/rotate Normal file
View file

@ -0,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)

View file

@ -70,10 +70,25 @@ resample(Memimage *dst, Rectangle r, Memimage *src, Rectangle sr)
}
}
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 @@ main(int argc, char **argv)
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 @@ main(int argc, char **argv)
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);