Adding Advanced Stamps HOWTO by Albert C.
This commit is contained in:
parent
fbbbaa2762
commit
4e91867039
4 changed files with 613 additions and 1 deletions
272
docs/ADVANCED-STAMPS-HOWTO.txt
Normal file
272
docs/ADVANCED-STAMPS-HOWTO.txt
Normal file
|
|
@ -0,0 +1,272 @@
|
||||||
|
Tux Paint
|
||||||
|
version 0.9.16
|
||||||
|
Advanced Staps HOWTO
|
||||||
|
|
||||||
|
Copyright 2006 by Albert Cahalan for the Tux Paint project
|
||||||
|
New Breed Software
|
||||||
|
|
||||||
|
albert@users.sf.net
|
||||||
|
http://www.newbreedsoftware .com/tuxpaint/
|
||||||
|
|
||||||
|
March 8, 2006 - March 8, 2006
|
||||||
|
|
||||||
|
About this HOWTO
|
||||||
|
|
||||||
|
This HOWTO assumes that you want to make an excellent Tux Paint stamp
|
||||||
|
from a JPEG image. There are easier and faster methods that produce
|
||||||
|
lower quality.
|
||||||
|
|
||||||
|
This HOWTO assumes you are dealing with normal opaque objects. Dealing
|
||||||
|
with semi-transparent objects (fire, moving fan blade, kid's baloon) or
|
||||||
|
light-giving objects (fire, lightbulb, sun) is best done with custom
|
||||||
|
software. Images with perfect solid-color backgrounds are also best done
|
||||||
|
with custom software, but are not troublesome to do as follows.
|
||||||
|
|
||||||
|
Image choice is crucial
|
||||||
|
|
||||||
|
License
|
||||||
|
|
||||||
|
If you wish to submit artwork to the Tux Paint developers for
|
||||||
|
consideration for inclusion in the official project, or if you wish to
|
||||||
|
release your own copy of Tux Paint, bundled with your own graphics,
|
||||||
|
you need an image that is compatible with the GNU General Public
|
||||||
|
License used by Tux Paint.
|
||||||
|
|
||||||
|
Images produced by the US government are Public Domain, but be aware
|
||||||
|
that the US government sometimes uses other images on the web. Google
|
||||||
|
image queries including either site:gov or site:mil will supply many
|
||||||
|
suitable images. (Note: the *.mil sites include non-military content,
|
||||||
|
too!)
|
||||||
|
|
||||||
|
Your own images can be placed in the Public Domain by declaring it so.
|
||||||
|
(Hire a lawyer if you feel the need for legal advice.)
|
||||||
|
|
||||||
|
For personal use, any image you can legitimately modify and use for
|
||||||
|
your own personal use should be fine.
|
||||||
|
|
||||||
|
Image Size and Orientation:
|
||||||
|
|
||||||
|
You need an image that has a useful orientation. Perspective is an
|
||||||
|
enemy. Images that show an object from the corner are difficult to fit
|
||||||
|
into a nice drawing. As a general rule, telephoto side views are the
|
||||||
|
best. The impossible ideal is that, for example, two wheels of a car
|
||||||
|
are perfectly hidden behind the other two.
|
||||||
|
|
||||||
|
Rotating an image can make it blurry, especially if you only rotate by
|
||||||
|
a few degrees. Images that don't need rotation are best, images that
|
||||||
|
need lots of rotation (30 to 60 degrees) are next best, and images
|
||||||
|
that need just a few degrees are worst. Rotation will also make an
|
||||||
|
image darker because most image editing software is very bad about
|
||||||
|
gamma handling. (Rotation is only legitimate for gamma=1.0 images.)
|
||||||
|
|
||||||
|
Very large images are more forgiving of mistakes, and thus easier to
|
||||||
|
work with. Choose an image with an object that is over 1000 pixels
|
||||||
|
across if you can. You can shrink this later to hide your mistakes.
|
||||||
|
|
||||||
|
Be sure that the image is not too grainy, dim, or washed out.
|
||||||
|
|
||||||
|
Pay attention to feet and wheels. If they are buried in something, you
|
||||||
|
will need to draw new ones. If only one is buried, you might be able
|
||||||
|
to copy the other one as a replacement.
|
||||||
|
|
||||||
|
Prepare the image:
|
||||||
|
|
||||||
|
First of all, be sure to avoid re-saving the image as a JPEG. This
|
||||||
|
causes quality loss. There is a special tool called jpegtran that lets
|
||||||
|
you crop an image without the normal quality loss. If you want a GUI for
|
||||||
|
it, use ljcrop. Otherwise, use it like this:
|
||||||
|
|
||||||
|
jpegtran -trim -copy none -crop 512x1728+160+128 < src.jpg >
|
||||||
|
cropped.jpg
|
||||||
|
|
||||||
|
Bring that image up in your image editor. If you didn't crop it yet, you
|
||||||
|
may find that your image editor is very slow. Rotate and crop the image
|
||||||
|
as needed. Save the image -- choose whatever native format supports
|
||||||
|
layers, masks, alpha, etc. GIMP users should choose "XCF", and Adobe
|
||||||
|
Photoshop users should choose "PSD", for example.
|
||||||
|
|
||||||
|
If you have rotated or cropped the image in your image editor, flatten
|
||||||
|
it now. You need to have just one RGB layer without mask or alpha.
|
||||||
|
|
||||||
|
Open the layers dialog box. Replicate the one layer several times. From
|
||||||
|
top to bottom you will need something like this:
|
||||||
|
|
||||||
|
1. unmodified image (write-protect this if you can)
|
||||||
|
2. an image you will modify -- the "WIP" layer
|
||||||
|
3. solid green (write-protect this if you can)
|
||||||
|
4. solid magenta (write-protect this if you can)
|
||||||
|
5. unmodified image (write-protect this if you can)
|
||||||
|
|
||||||
|
Give the WIP layer a rough initial mask. You might start with a
|
||||||
|
selection, or by using the grayscale value of the WIP layer. You might
|
||||||
|
invert the mask.
|
||||||
|
|
||||||
|
Warning: once you have the mask, you may not rotate or scale the image
|
||||||
|
normally. This would cause data loss. You will be given special scaling
|
||||||
|
instructions later.
|
||||||
|
|
||||||
|
Prepare the mask:
|
||||||
|
|
||||||
|
Get used to doing Ctrl-click and Alt-click on the thumbnail images in
|
||||||
|
the layers dialog. You will need this to control what you are looking at
|
||||||
|
and what you are editing. Sometimes you will be editing things you can't
|
||||||
|
see. For example, you might edit the mask of the WIP layer while looking
|
||||||
|
at the unmodified image. Pay attention so you don't screw up. Always
|
||||||
|
verify that you are editing the right thing.
|
||||||
|
|
||||||
|
Set an unmodified image as what you will view (the top one is easiest).
|
||||||
|
Set the WIP mask as what you will edit. At some point, perhaps not
|
||||||
|
immediately, you should magnify the image to about 400% (each pixel of
|
||||||
|
the image is seen and edited as a 4x4 block of pixels on your screen).
|
||||||
|
|
||||||
|
Select parts of the image that need to be 100% opaque or 0% opaque. If
|
||||||
|
you can select the object or background somewhat accurately by color, do
|
||||||
|
so. As needed to avoid selecting any pixels that should be partially
|
||||||
|
opaque (generally at the edge of the object) you should grow, shrink,
|
||||||
|
and invert the selection.
|
||||||
|
|
||||||
|
Fill the 100% opaque areas with white, and the 0% opaque areas with
|
||||||
|
black. This is most easily done by drag-and-drop from the
|
||||||
|
foreground/background color indicator. You should not see anything
|
||||||
|
happen, because you are viewing the unmodified image layer while editing
|
||||||
|
the mask of the WIP layer. Large changes might be noticable in the
|
||||||
|
thumbnail.
|
||||||
|
|
||||||
|
Now you must be zoomed in.
|
||||||
|
|
||||||
|
Check your work. Hide the top unmodified image layer. Display just the
|
||||||
|
mask, which should be a white object on a black background (probably
|
||||||
|
with unedited grey at the edge). Now display the WIP layer normally, so
|
||||||
|
that the mask is active. This should show your object over top of the
|
||||||
|
next highest enabled layer, which should be green or magenta as needed
|
||||||
|
for maximum contrast. You might wish to flip back and forth between
|
||||||
|
those backgrounds by repeatedly clicking to enable/disable the green
|
||||||
|
layer. Fix any obvious and easy problems by editing the mask while
|
||||||
|
viewing the mask.
|
||||||
|
|
||||||
|
Go back to viewing the top unmodified layer while editing the WIP mask.
|
||||||
|
Set your drawing tool the paintbrush. For the brush, choose a small
|
||||||
|
fuzzy circle. The 5x5 size is good for most uses.
|
||||||
|
|
||||||
|
With a steady hand, trace around the image. Use black around the
|
||||||
|
outside, and white around the inside. Avoid making more than one pass
|
||||||
|
without switching colors (and thus sides).
|
||||||
|
|
||||||
|
Flip views a bit, checking to see that the mask is working well. When
|
||||||
|
the WIP layer is composited over the green or magenta, you should see a
|
||||||
|
tiny bit of the original background as an ugly fringe around the edge.
|
||||||
|
If this fringe is missing, then you made the object mask too small. The
|
||||||
|
fringe consists of pixels that are neither 100% object nor 0% object.
|
||||||
|
For them, the mask should be neither 100% nor 0%. The fringe gets
|
||||||
|
removed soon.
|
||||||
|
|
||||||
|
View and edit the mask. Select by color, choosing either black or white.
|
||||||
|
Most likely you will see unselected specks that are not quite the
|
||||||
|
expected color. Invert the selection, then paint these away using the
|
||||||
|
pencil tool. Do this operation for both white and black.
|
||||||
|
|
||||||
|
Replace the fringe and junk pixels:
|
||||||
|
|
||||||
|
Still viewing the mask, select by color. Choose black. Shrink the
|
||||||
|
selection by several pixels, being sure to NOT shrink from the edges of
|
||||||
|
the mask (the shrink helps you avoid and recover from mistakes).
|
||||||
|
|
||||||
|
Now disable the mask. View and edit the unmasked WIP layer. Using the
|
||||||
|
color picker tool, choose a color that is average for the object.
|
||||||
|
Drag-and-drop this color into the selection, thus removing most of the
|
||||||
|
non-object pixels.
|
||||||
|
|
||||||
|
This solid color will compress well and will help prevent ugly color
|
||||||
|
fringes when Tux Paint scales the image down. If the edge of the object
|
||||||
|
has multiple colors that are very different, you should split up your
|
||||||
|
selection so that you can color the nearby background to be similar.
|
||||||
|
|
||||||
|
Now you will paint away the existing edge fringe. Be sure that you are
|
||||||
|
editing and viewing the WIP image. Frequent layer visibility changes
|
||||||
|
will help you to see what you are doing. You are likely to use all of:
|
||||||
|
|
||||||
|
* composited over green (mask enabled)
|
||||||
|
* composited over magenta (mask enabled)
|
||||||
|
* original (the top or bottom layer)
|
||||||
|
* composited over the original (mask enabled)
|
||||||
|
* raw WIP layer (mask DISABLED)
|
||||||
|
|
||||||
|
To reduce accidents, you may wish to select only those pixels that are
|
||||||
|
not grey in the mask. (Select by color from the mask, choose black, add
|
||||||
|
mode, choose white, invert. Alternately: Select all, select by color
|
||||||
|
from the mask, subtract mode, choose black, choose white.) If you do
|
||||||
|
this, you'll probably want to expand the selection a bit and/or hide the
|
||||||
|
"crawling ants" line that marks the selection.
|
||||||
|
|
||||||
|
Use the clone tool and the brush tool. Vary the opacity as needed. Use
|
||||||
|
small round brushes mostly, perhaps 3x3 or 5x5, fuzzy or not. (It is
|
||||||
|
generally nice to pair up fuzzy brushes with 100% opacity and non-fuzzy
|
||||||
|
brushes with about 70% opacity.) Unusual drawing modes can be helpful
|
||||||
|
with semi-transparent objects.
|
||||||
|
|
||||||
|
The goal is to remove the edge fringe, both inside and outside of the
|
||||||
|
object. The inside fringe, visible when the object is composited over
|
||||||
|
magenta or green, must be removed for obvious reasons. The outside
|
||||||
|
fringe must also be removed because it will become visible when the
|
||||||
|
image is scaled down. As an example, consider a 2x2 region of pixels at
|
||||||
|
the edge of a sharp-edged object. The left half is black and 0% opaque.
|
||||||
|
The right half is white and 100% opaque. That is, we have a white object
|
||||||
|
on a black background. When Tux Paint scales this to 50% (a 1x1 pixel
|
||||||
|
area), the result will be a grey 50% opaque pixel. The correct result
|
||||||
|
would be a white 50% opaque pixel. To get this result, we would paint
|
||||||
|
away the black pixels. They matter, despite being 0% opaque.
|
||||||
|
|
||||||
|
Tux Paint can scale images down by a very large factor, so it is
|
||||||
|
important to extend the edge of your object outward by a great deal.
|
||||||
|
Right at the edge of your object, you should be very accurate about
|
||||||
|
this. As you go outward away from the object, you can get a bit sloppy.
|
||||||
|
It is reasonable to paint outward by a dozen pixels or more. The farther
|
||||||
|
you go, the more Tux Paint can scale down without creating ugly color
|
||||||
|
fringes. For areas that are more than a few pixels away from the object
|
||||||
|
edge, you should use the pencil tool (or sloppy select with
|
||||||
|
drag-and-drop color) to ensure that the result will compress well.
|
||||||
|
|
||||||
|
Save the image for Tux Paint
|
||||||
|
|
||||||
|
It is very easy to ruin your hard work. Image editors can silently
|
||||||
|
destroy pixels in 0% opaque areas. The conditions under which this
|
||||||
|
happens may vary from version to version. If you are very trusting, you
|
||||||
|
can try saving your image directly as a PNG. Be sure to read it back in
|
||||||
|
again to verify that the 0% opaque areas didn't turn black or white,
|
||||||
|
which would create fringes when Tux Paint scales the image down. If you
|
||||||
|
need to scale your image to save space (and hide your mistakes), you are
|
||||||
|
almost certain to destroy all the 0% opaque areas. So here is a better
|
||||||
|
way...
|
||||||
|
|
||||||
|
A Safer Way to Save:
|
||||||
|
|
||||||
|
Drag the mask from the layers dialog to the unused portion of the
|
||||||
|
toolbar (right after the last drawing tool). This will create a new
|
||||||
|
image consisting of one layer that contains the mask data. Scale this
|
||||||
|
as desired, remembering the settings you use. Often you should start
|
||||||
|
with an image that is about 700 to 1500 pixels across, and end up with
|
||||||
|
one that is 300 to 400.
|
||||||
|
|
||||||
|
Save the mask image as a NetPBM portable greymap (".pgm") file. (If
|
||||||
|
you are using an old release of The GIMP, you might need to convert
|
||||||
|
the image to greyscale before you can save it.) Choose the more
|
||||||
|
compact "RAW PGM" format. (The second character of the file should be
|
||||||
|
the ASCII digit "5", hex byte 0x35.)
|
||||||
|
|
||||||
|
You may close the mask image.
|
||||||
|
|
||||||
|
Going back to the multi-layer image, now select the WIP layer. As you
|
||||||
|
did with the mask, drag this from the layers dialog to the toolbar.
|
||||||
|
You should get a single-layer image of your WIP data. If the mask came
|
||||||
|
along too, get rid of it. You should be seeing the object and the
|
||||||
|
painted-away surroundings, without any mask thumbnail in the layers
|
||||||
|
dialog. If you scaled the mask, then scale this image in exactly the
|
||||||
|
same way. Save this image as a NetPBM portable pixmap (".ppm") file.
|
||||||
|
(Note: ppm, not pgm.) (If you choose the RAW PPM format, the second
|
||||||
|
byte of the file should be the ASCII digit "6", hex byte 0x36.)
|
||||||
|
|
||||||
|
Now you need to merge the two files into one. Do that with the
|
||||||
|
pnmtopng command, like this:
|
||||||
|
|
||||||
|
pnmtopng -force -compression 9 -alpha mask.pgm fg.ppm >
|
||||||
|
final-stamp.png
|
||||||
|
|
@ -86,6 +86,10 @@ $Id$
|
||||||
---------------------------
|
---------------------------
|
||||||
* Moved "Extending Tux Paint" into its own separate document.
|
* Moved "Extending Tux Paint" into its own separate document.
|
||||||
|
|
||||||
|
* Created an Advanced Stamps HOWTO (documenting how to create
|
||||||
|
stamp PNGs that scale well without edge fringing).
|
||||||
|
Albert Cahalan <albert@users.sf.net>
|
||||||
|
|
||||||
* Compiling, porting and packaging updates:
|
* Compiling, porting and packaging updates:
|
||||||
-----------------------------------------
|
-----------------------------------------
|
||||||
* Split parts of "tuxpaint.c" into separate source files:
|
* Split parts of "tuxpaint.c" into separate source files:
|
||||||
|
|
|
||||||
|
|
@ -12,13 +12,14 @@
|
||||||
|
|
||||||
LINKS=links -dump -no-numbering -no-references
|
LINKS=links -dump -no-numbering -no-references
|
||||||
|
|
||||||
all: README.txt OPTIONS.txt FAQ.txt EXTENDING.txt
|
all: README.txt OPTIONS.txt FAQ.txt EXTENDING.txt ADVANCED-STAMPS-HOWTO.txt
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
-rm README.txt
|
-rm README.txt
|
||||||
-rm OPTIONS.txt
|
-rm OPTIONS.txt
|
||||||
-rm FAQ.txt
|
-rm FAQ.txt
|
||||||
-rm EXTENDING.txt
|
-rm EXTENDING.txt
|
||||||
|
-rm ADVANCED-STAMPS-HOWTO.txt
|
||||||
|
|
||||||
README.txt: html/README.html
|
README.txt: html/README.html
|
||||||
$(LINKS) $< > $@
|
$(LINKS) $< > $@
|
||||||
|
|
@ -32,3 +33,7 @@ FAQ.txt: html/FAQ.html
|
||||||
EXTENDING.txt: html/EXTENDING.html
|
EXTENDING.txt: html/EXTENDING.html
|
||||||
$(LINKS) $< > $@
|
$(LINKS) $< > $@
|
||||||
|
|
||||||
|
ADVANCED-STAMPS-HOWTO.txt: html/ADVANCED-STAMPS-HOWTO.html
|
||||||
|
$(LINKS) $< > $@
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
331
docs/html/ADVANCED-STAMPS-HOWTO.html
Normal file
331
docs/html/ADVANCED-STAMPS-HOWTO.html
Normal file
|
|
@ -0,0 +1,331 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||||
|
<html><head><title>Tux Paint Advanced Stamps HOWTO</title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#FF0000"
|
||||||
|
alink="#FF00FF">
|
||||||
|
|
||||||
|
<center>
|
||||||
|
<h1><img src="images/tuxpaint-title.png" width=220 height=219
|
||||||
|
alt="Tux Paint"><br>
|
||||||
|
version
|
||||||
|
|
||||||
|
0.9.16
|
||||||
|
|
||||||
|
<br>
|
||||||
|
Advanced Staps HOWTO</h1>
|
||||||
|
|
||||||
|
<p>Copyright 2006 by Albert Cahalan for the Tux Paint project<br>
|
||||||
|
New Breed Software</p>
|
||||||
|
<p><a href="mailto:albert@users.sf.net">albert@users.sf.net</a><br>
|
||||||
|
<a href="http://www.newbreedsoftware.com/tuxpaint/">http://www.newbreedsoftware
|
||||||
|
.com/tuxpaint/</a></p>
|
||||||
|
|
||||||
|
<p>March 8, 2006 - March 8, 2006</p>
|
||||||
|
</center>
|
||||||
|
|
||||||
|
|
||||||
|
<h2>About this HOWTO</h2>
|
||||||
|
<blockquote>
|
||||||
|
|
||||||
|
<p>This HOWTO assumes that you want to make an excellent Tux Paint
|
||||||
|
stamp from a JPEG image. There are easier and faster methods that
|
||||||
|
produce lower quality.</p>
|
||||||
|
|
||||||
|
<p>This HOWTO assumes you are dealing with normal opaque objects. Dealing
|
||||||
|
with semi-transparent objects (fire, moving fan blade, kid's baloon)
|
||||||
|
or light-giving objects (fire, lightbulb, sun) is best done with custom
|
||||||
|
software. Images with perfect solid-color backgrounds are also best done
|
||||||
|
with custom software, but are not troublesome to do as follows.</p>
|
||||||
|
|
||||||
|
</blockquote>
|
||||||
|
|
||||||
|
<h2>Image choice is crucial</h2>
|
||||||
|
<blockquote>
|
||||||
|
|
||||||
|
<h3>License</h3>
|
||||||
|
<blockquote>
|
||||||
|
|
||||||
|
<p>If you wish to submit artwork to the Tux Paint developers for
|
||||||
|
consideration for inclusion in the official project, or if you wish to
|
||||||
|
release your own copy of Tux Paint, bundled with your own graphics,
|
||||||
|
you need an image that is compatible with the GNU
|
||||||
|
<a href="../COPYING.txt">General Public License</a> used by
|
||||||
|
Tux Paint.</p>
|
||||||
|
|
||||||
|
<p>Images produced by the US government are Public Domain, but be aware
|
||||||
|
that the US government sometimes uses other images on the web.
|
||||||
|
<a href="http://images.google.com/">Google image</a> queries including
|
||||||
|
either <code>site:gov</code> or <code>site:mil</code> will supply many
|
||||||
|
suitable images. (Note: the *.mil sites include non-military content,
|
||||||
|
too!)</p>
|
||||||
|
|
||||||
|
Your own images can be placed in the Public Domain by declaring it
|
||||||
|
so. (Hire a lawyer if you feel the need for legal advice.)</p>
|
||||||
|
|
||||||
|
<p>For personal use, any image you can legitimately modify and use
|
||||||
|
for your own personal use should be fine.</p>
|
||||||
|
|
||||||
|
</blockquote>
|
||||||
|
|
||||||
|
<h3>Image Size and Orientation:</h3>
|
||||||
|
<blockquote>
|
||||||
|
|
||||||
|
<p>You need an image that has a useful orientation. Perspective is
|
||||||
|
an enemy. Images that show an object from the corner are difficult to
|
||||||
|
fit into a nice drawing. As a general rule, telephoto side views are
|
||||||
|
the best. The impossible ideal is that, for example, two wheels of a
|
||||||
|
car are perfectly hidden behind the other two.</p>
|
||||||
|
|
||||||
|
<p>Rotating an image can make it blurry, especially if you only rotate by
|
||||||
|
a few degrees. Images that don't need rotation are best, images that need
|
||||||
|
lots of rotation (30 to 60 degrees) are next best, and images that need
|
||||||
|
just a few degrees are worst. Rotation will also make an image darker
|
||||||
|
because most image editing software is very bad about gamma handling.
|
||||||
|
(Rotation is only legitimate for gamma=1.0 images.)</p>
|
||||||
|
|
||||||
|
<p>Very large images are more forgiving of mistakes, and thus easier to
|
||||||
|
work with. Choose an image with an object that is over 1000 pixels
|
||||||
|
across if you can. You can shrink this later to hide your mistakes.</p>
|
||||||
|
|
||||||
|
<p>Be sure that the image is not too grainy, dim, or washed out.</p>
|
||||||
|
|
||||||
|
<p>Pay attention to feet and wheels. If they are buried in something,
|
||||||
|
you will need to draw new ones. If only one is buried, you might be
|
||||||
|
able to copy the other one as a replacement.</p>
|
||||||
|
|
||||||
|
</blockquote>
|
||||||
|
</blockquote>
|
||||||
|
|
||||||
|
<h2>Prepare the image:</h2>
|
||||||
|
<blockquote>
|
||||||
|
|
||||||
|
<p>First of all, be sure to avoid re-saving the image as a JPEG. This causes
|
||||||
|
quality loss. There is a special tool called
|
||||||
|
<a href="http://gnuwin32.sourceforge.net/packages/jpeg.htm">jpegtran</a>
|
||||||
|
that lets you crop an image without the normal quality loss. If you want a
|
||||||
|
GUI for it, use
|
||||||
|
<a href="http://astron.berkeley.edu/~mperrin/software/ljcrop/">ljcrop</a>.
|
||||||
|
Otherwise, use it like this:</p>
|
||||||
|
|
||||||
|
<blockquote>
|
||||||
|
<p><code>jpegtran -trim -copy none -crop 512x1728+160+128 < src.jpg
|
||||||
|
> cropped.jpg</code></p>
|
||||||
|
</blockquote>
|
||||||
|
|
||||||
|
<p>Bring that image up in your image editor. If you didn't crop it yet,
|
||||||
|
you may find that your image editor is very slow. Rotate and crop the
|
||||||
|
image as needed. Save the image — choose whatever native format
|
||||||
|
supports layers, masks, alpha, etc. <a href="http://www.gimp.org/">GIMP</a>
|
||||||
|
users should choose "XCF", and Adobe Photoshop users should choose "PSD",
|
||||||
|
for example.</p>
|
||||||
|
|
||||||
|
<p>If you have rotated or cropped the image in your image editor, flatten
|
||||||
|
it now. You need to have just one RGB layer <i>without mask or
|
||||||
|
alpha</i>.</p>
|
||||||
|
|
||||||
|
<p>Open the layers dialog box. Replicate the one layer several times.
|
||||||
|
From top to bottom you will need something like this:</p>
|
||||||
|
|
||||||
|
<ol>
|
||||||
|
<li>unmodified image (write-protect this if you can)
|
||||||
|
<li>an image you will modify — the "WIP" layer
|
||||||
|
<li>solid green (write-protect this if you can)
|
||||||
|
<li>solid magenta (write-protect this if you can)
|
||||||
|
<li>unmodified image (write-protect this if you can)
|
||||||
|
</ol>
|
||||||
|
|
||||||
|
<p>Give the WIP layer a rough initial mask. You might start with a
|
||||||
|
selection, or by using the grayscale value of the WIP layer. You might
|
||||||
|
invert the mask.</p>
|
||||||
|
|
||||||
|
<p><b>Warning:</b> once you have the mask, you may not rotate or
|
||||||
|
scale the image normally. This would cause data loss. You will be
|
||||||
|
given special scaling instructions later.</p>
|
||||||
|
|
||||||
|
</blockquote>
|
||||||
|
|
||||||
|
<h2>Prepare the mask:</h2>
|
||||||
|
<blockquote>
|
||||||
|
|
||||||
|
<p>Get used to doing Ctrl-click and Alt-click on the thumbnail images in the
|
||||||
|
layers dialog. You will need this to control what you are looking at and
|
||||||
|
what you are editing. Sometimes you will be editing things you can't see.
|
||||||
|
For example, you might edit the mask of the WIP layer while looking at the
|
||||||
|
unmodified image. Pay attention so you don't screw up. Always verify that
|
||||||
|
you are editing the right thing.</p>
|
||||||
|
|
||||||
|
<p>Set an unmodified image as what you will view (the top one is easiest).
|
||||||
|
Set the WIP mask as what you will edit. At some point, perhaps not
|
||||||
|
immediately, you should magnify the image to about 400% (each pixel of
|
||||||
|
the image is seen and edited as a 4x4 block of pixels on your screen).</p>
|
||||||
|
|
||||||
|
<p>Select parts of the image that need to be 100% opaque or 0% opaque.
|
||||||
|
If you can select the object or background somewhat accurately by
|
||||||
|
color, do so. As needed to avoid selecting any pixels that should be
|
||||||
|
partially opaque (generally at the edge of the object) you should
|
||||||
|
grow, shrink, and invert the selection.</p>
|
||||||
|
|
||||||
|
<p>Fill the 100% opaque areas with white, and the 0% opaque areas with
|
||||||
|
black. This is most easily done by drag-and-drop from the
|
||||||
|
foreground/background color indicator. You should not see anything happen,
|
||||||
|
because you are viewing the unmodified image layer while editing the mask
|
||||||
|
of the WIP layer. Large changes might be noticable in the thumbnail.</p>
|
||||||
|
|
||||||
|
<p>Now you must be zoomed in.</p>
|
||||||
|
|
||||||
|
<p>Check your work. Hide the top unmodified image layer. Display just the
|
||||||
|
mask, which should be a white object on a black background (probably
|
||||||
|
with unedited grey at the edge). Now display the WIP layer normally, so
|
||||||
|
that the mask is active. This should show your object over top of the
|
||||||
|
next highest enabled layer, which should be green or magenta as needed
|
||||||
|
for maximum contrast. You might wish to flip back and forth between
|
||||||
|
those backgrounds by repeatedly clicking to enable/disable the green
|
||||||
|
layer. Fix any obvious and easy problems by editing the mask while
|
||||||
|
viewing the mask.</p>
|
||||||
|
|
||||||
|
<p>Go back to viewing the top unmodified layer while editing the WIP mask.
|
||||||
|
Set your drawing tool the paintbrush. For the brush, choose a small fuzzy
|
||||||
|
circle. The 5x5 size is good for most uses.</p>
|
||||||
|
|
||||||
|
<p>With a steady hand, trace around the image. Use black around the outside,
|
||||||
|
and white around the inside. Avoid making more than one pass without
|
||||||
|
switching colors (and thus sides).</p>
|
||||||
|
|
||||||
|
<p>Flip views a bit, checking to see that the mask is working well. When
|
||||||
|
the WIP layer is composited over the green or magenta, you should see a
|
||||||
|
tiny bit of the original background as an ugly fringe around the edge.
|
||||||
|
If this fringe is missing, then you made the object mask too small.
|
||||||
|
The fringe consists of pixels that are neither 100% object nor 0% object.
|
||||||
|
For them, the mask should be neither 100% nor 0%. The fringe gets removed
|
||||||
|
soon.</p>
|
||||||
|
|
||||||
|
<p>View and edit the mask. Select by color, choosing either black or white.
|
||||||
|
Most likely you will see unselected specks that are not quite the expected
|
||||||
|
color. Invert the selection, then paint these away using the pencil tool.
|
||||||
|
Do this operation for both white and black.</p>
|
||||||
|
|
||||||
|
</blockquote>
|
||||||
|
|
||||||
|
<h2>Replace the fringe and junk pixels:</h2>
|
||||||
|
<blockquote>
|
||||||
|
|
||||||
|
<p>Still viewing the mask, select by color. Choose black. Shrink the
|
||||||
|
selection by several pixels, being sure to NOT shrink from the edges of
|
||||||
|
the mask (the shrink helps you avoid and recover from mistakes).</p>
|
||||||
|
|
||||||
|
<p>Now disable the mask. View and edit the unmasked WIP layer. Using the
|
||||||
|
color picker tool, choose a color that is average for the object.
|
||||||
|
Drag-and-drop this color into the selection, thus removing most of the
|
||||||
|
non-object pixels.</p>
|
||||||
|
|
||||||
|
<p>This solid color will compress well and will help prevent ugly color
|
||||||
|
fringes when Tux Paint scales the image down. If the edge of the
|
||||||
|
object has multiple colors that are very different, you should split up
|
||||||
|
your selection so that you can color the nearby background to be
|
||||||
|
similar.</p>
|
||||||
|
|
||||||
|
<p>Now you will paint away the existing edge fringe. Be sure that you are
|
||||||
|
editing and viewing the WIP image. Frequent layer visibility changes will
|
||||||
|
help you to see what you are doing. You are likely to use all of:</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>composited over green (mask enabled)
|
||||||
|
<li>composited over magenta (mask enabled)
|
||||||
|
<li>original (the top or bottom layer)
|
||||||
|
<li>composited over the original (mask enabled)
|
||||||
|
<li>raw WIP layer (mask DISABLED)
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>To reduce accidents, you may wish to select only those pixels that are
|
||||||
|
not grey in the mask. (Select by color from the mask, choose black, add
|
||||||
|
mode, choose white, invert. Alternately: Select all, select by color from
|
||||||
|
the mask, subtract mode, choose black, choose white.) If you do this,
|
||||||
|
you'll probably want to expand the selection a bit and/or hide the
|
||||||
|
"crawling ants" line that marks the selection.</p>
|
||||||
|
|
||||||
|
<p>Use the clone tool and the brush tool. Vary the opacity as needed.
|
||||||
|
Use small round brushes mostly, perhaps 3x3 or 5x5, fuzzy or not.
|
||||||
|
(It is generally nice to pair up fuzzy brushes with 100% opacity and
|
||||||
|
non-fuzzy brushes with about 70% opacity.) Unusual drawing modes can be
|
||||||
|
helpful with semi-transparent objects.</p>
|
||||||
|
|
||||||
|
<p>The goal is to remove the edge fringe, both inside and outside of
|
||||||
|
the object. The inside fringe, visible when the object is composited
|
||||||
|
over magenta or green, must be removed for obvious reasons. The
|
||||||
|
outside fringe must also be removed because it will become visible
|
||||||
|
when the image is scaled down. As an example, consider a 2x2 region of
|
||||||
|
pixels at the edge of a sharp-edged object. The left half is black
|
||||||
|
and 0% opaque. The right half is white and 100% opaque. That is, we
|
||||||
|
have a white object on a black background. When Tux Paint scales this
|
||||||
|
to 50% (a 1x1 pixel area), the result will be a grey 50% opaque pixel.
|
||||||
|
The correct result would be a white 50% opaque pixel. To get this
|
||||||
|
result, we would paint away the black pixels. They matter, despite
|
||||||
|
being 0% opaque.</p>
|
||||||
|
|
||||||
|
<p>Tux Paint can scale images down by a very large factor, so it is
|
||||||
|
important to extend the edge of your object outward by a great deal.
|
||||||
|
Right at the edge of your object, you should be very accurate about this.
|
||||||
|
As you go outward away from the object, you can get a bit sloppy. It is
|
||||||
|
reasonable to paint outward by a dozen pixels or more. The farther you go,
|
||||||
|
the more Tux Paint can scale down without creating ugly color fringes.
|
||||||
|
For areas that are more than a few pixels away from the object edge, you
|
||||||
|
should use the pencil tool (or sloppy select with drag-and-drop color) to
|
||||||
|
ensure that the result will compress well.</p>
|
||||||
|
</blockquote>
|
||||||
|
|
||||||
|
<h2>Save the image for Tux Paint</h2>
|
||||||
|
<blockquote>
|
||||||
|
|
||||||
|
<p>It is very easy to ruin your hard work. Image editors can silently
|
||||||
|
destroy pixels in 0% opaque areas. The conditions under which this
|
||||||
|
happens may vary from version to version. If you are very trusting,
|
||||||
|
you can try saving your image directly as a PNG. Be sure to read it
|
||||||
|
back in again to verify that the 0% opaque areas didn't turn black or
|
||||||
|
white, which would create fringes when Tux Paint scales the image down.
|
||||||
|
If you need to scale your image to save space (and hide your mistakes), you
|
||||||
|
are almost certain to destroy all the 0% opaque areas. So here is a better
|
||||||
|
way...</p>
|
||||||
|
|
||||||
|
<h3>A Safer Way to Save:</h3>
|
||||||
|
<blockquote>
|
||||||
|
|
||||||
|
<p>Drag the mask from the layers dialog to the unused portion of
|
||||||
|
the toolbar (right after the last drawing tool). This will create a
|
||||||
|
new image consisting of one layer that contains the mask data. Scale
|
||||||
|
this as desired, remembering the settings you use. Often you should
|
||||||
|
start with an image that is about 700 to 1500 pixels across, and end
|
||||||
|
up with one that is 300 to 400.</p>
|
||||||
|
|
||||||
|
<p>Save the mask image as a NetPBM portable greymap ("<code>.pgm</code>")
|
||||||
|
file. (If you are using an old release of The GIMP, you might need
|
||||||
|
to convert the image to greyscale before you can save it.) Choose the
|
||||||
|
more compact "RAW PGM" format. (The second character of the file
|
||||||
|
should be the ASCII digit "5", hex byte 0x35.)</p>
|
||||||
|
|
||||||
|
<p>You may close the mask image.</p>
|
||||||
|
|
||||||
|
<p>Going back to the multi-layer image, now select the WIP layer. As you
|
||||||
|
did with the mask, drag this from the layers dialog to the toolbar. You
|
||||||
|
should get a single-layer image of your WIP data. If the mask came along
|
||||||
|
too, get rid of it. You should be seeing the object and the painted-away
|
||||||
|
surroundings, without any mask thumbnail in the layers dialog. If you
|
||||||
|
scaled the mask, then scale this image in exactly the same way. Save
|
||||||
|
this image as a NetPBM portable pixmap ("<code>.ppm</code>") file.
|
||||||
|
(Note: ppm, not pgm.) (If you choose the RAW PPM format, the
|
||||||
|
second byte of the file should be the ASCII digit "6", hex byte 0x36.)</p>
|
||||||
|
|
||||||
|
<p>Now you need to merge the two files into one. Do that with the
|
||||||
|
<a href="http://netpbm.sourceforge.net/">pnmtopng</a> command, like
|
||||||
|
this:</p>
|
||||||
|
|
||||||
|
<blockquote><p><code>
|
||||||
|
pnmtopng -force -compression 9 -alpha mask.pgm fg.ppm >
|
||||||
|
final-stamp.png
|
||||||
|
</code></p></blockquote>
|
||||||
|
</blockquote>
|
||||||
|
</blockquote>
|
||||||
|
|
||||||
|
</body></html>
|
||||||
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue