Dieter Krachtus wrote:
> I am in science and want to understand certain things
PIL does better...
>
> One can get jpg-thumbnails of images with PIL. This
happens pretty fast
> - so PIL cannot read the complete file, but use some
trick. I guess it
> just reads in a 2^x (i.e. 1/2, 1/4, 1/8, 1/16, ...) of
the actual
> image-data. Just to understand how this is done, is my
qustion:
>
> 1. Does PIL look into the "header" of the
jpg file and finds out from
> where to where the actual image data goes and how the
dimension
> (width/height in pixel) of the image is ?
yes.
> 2. Then whats next? Does PIL read only e.g. every 16th
byte, or how is
> this done - if you do this - is the resulting stream of
bytes still
> interpretable as a jpg ?
it's a lot tricker than that: the JPEG data stream
represents image data not as
a bunch of separate pixels, but as a set of frequency
coefficients, which, when
combined, can be used to reconstruct the original image (in
pretty much the
same way as you can generate a square wave by summing enough
sine waves;
see http://en.wi
kipedia.org/wiki/Square_wave).
the frequency transform is made on 8x8 tiles, so you get a
distinct set of
coefficients for each 8x8 box in the source image.
(to get lossy compression, JPEG simply uses fewer bits to
store the coefficients
than they really need; e.g. instead of storing a full range
of, say, 0-1000 for a
high-frequency coefficient, the file may only use 0, 300,
600, and 900. this
lets you store the coefficient in 2 bits instead of 10.)
to quickly generate thumbnails from JPEG images from the
coefficients, PIL
simply ignores some of the coefficients. to generate an 1/8
image, PIL uses
the "DC component" from the frequency transform
directly (which corre-
sponds to the average value for the entire 8x8 box). for
1/2 and 1/4 images,
PIL only enough frequency components to generate a 4x4 or
2x2 tile.
there's a lot more to JPEG than I've described here; if
you want to learn more
about JPEG, the wikipedia entry is quite good:
http://en.wikipedia
.org/wiki/JPEG
hope this helps!
</F>
_______________________________________________
Image-SIG maillist - Image-SIG python.org
htt
p://mail.python.org/mailman/listinfo/image-sig
|