| Technical Info.
A simplified flowchart of the stamping process
is shown here:
1.Calculating stamp area -> 2.Storing
the original JPEG sub-bitstream -> 3.Stamping -> 4.Encoding
the stamped area only -> 5.Gathering all together
The 2nd step makes reverse operation possible. The 4th step
is required for lossless stamping.
The JPEG file format makes Lossless and Reversible stamping
possible. PhotoStamper works with JPEG image files only.
Based on user preferences for a stamp (font
size, background presence, etc.) PhotoStamper calculates the
coordinates of the picture area which is going to be changed.
Since JPEG is based on the 8x8 DCT algorithm, the coordinates
are rounded to be divisible by 8.
From the original bitstream the program extracts
a sub-bitstream which corresponds to the stamped area
and stores it as a custom JPEG data marker. Along with
the substream the application stores stamped area coordinates
in this marker. It also computes and stores in the marker
check sums both for the original bitstream and for the
extracted sub-bitstream. It prevents the program to
work with modified or corrupted data later on during
restoration of the original picture.
The extracted bitstream is decoded and the actual stamp is
placed on top of the decoded image producing the stamped image.
Using the encoding parameters of original
picture PhotoStamper encodes the stamped image by JPEG encoder
and embeds the new bitstream into the original one instead
of the extracted sub-bitstream.
During the last step - gathering all together
- along with the stamped JPEG image and the PhotoStamper's
marker all original extra data (Adobe marker, EXIF data, ...)
are copied into the file.
PhotoStamper copies all JPEG markers
to the output image file (including EXIF, IPTC and all
Undo or Restoring original pictures
First of all PhotoStamper checks a presence
of its own marker in the picture file. Then it validates the
bitstream check sums to make sure the picture is not modified
after last stamping. After that PhotoStamper just substitutes
a sub-bitstream corresponding to the stamped area with original
substream stored in the custom marker.
The program also removes its custom marker from the image.
Stamping already stamped pictures
The application restores an original image
first (see  for more details).
It applies a new stamp to the restored original image (see
 for more details).
For stamping PhotoStamper tries to get date
and time from the image's EXIF data first.
If EXIF data are not available the picture file creation time
is used instead.