[Image-SIG] BUG: PIL DPI trouble - fix for TIFF files (PIL 1.1.6)
Markus Kemmerling
kemmerling at gmx.at
Thu Oct 18 09:50:49 CEST 2007
I would really like to see these fixes included in a next PIL
release, if there will be one. (I also would like to see an egg
release, but that's a different story.)
Note, that I posted a similar fix (combining Florian's and your's) to
the list a long time ago (july 2006). There is a small difference
though, see below.
Maybe a test for these fixes should be added, but I can't see any
TIFF image tests at all in the PIL distribution.
Am 10.10.2007 um 16:18 schrieb Gary Bloom:
> Here's a quick fix for the writing of the file, as well...
>
> Before making the fix below, go to line 721 and change the '1' to a
> '2' !
>
> 721: ifd[RESOLUTION_UNIT] = 1
>
> becomes
>
> 721: ifd[RESOLUTION_UNIT] = 2
>
> Then make the changes listed below. This is consistent with
> those changes. This is a quick and dirty fix that I have not
> tested extensively, but it quickly allows me to read and write TIFF
> images with both the PIL and Photoshop, and each can see the DPI as
> set by the other. It fixes the problem I've had with PIL reading/
> writing TIFFs. Thanks, Florian!
>
> Regards,
>
> Gary Bloom
> Sales Engineer
> Sefas Innovation
> www.sefas.com
> ============
> [Image-SIG] BUG: PIL DPI trouble - fix for TIFF files (PIL 1.1.6)
>
> Florian Höch lists+Image_SIG at hoech.org
> Fri Oct 5 00:05:16 CEST 2007
>
> Previous message: [Image-SIG] fromstring image question
> Next message: [Image-SIG] Image transpose
> Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
> PIL only adds a dpi entry in the info dictionary if no resolution unit
> is specified in the TIFF file. This seems to be because of a
> misinterpretation of resolution unit values: they have a different
> meaning than in a JPEG file. JPEG: 0 = None; 1 = inches; 2 = cm.
> TIFF: 1
> = None; 2 = inches; 3 = cm (see
> http://www.awaresystems.be/imaging/tiff/tifftags/
> resolutionunit.html and
> http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/JPEG.html)
>
> Here's a quick fix:
>
> Open TiffImagePlugin.py and go to line 577. Change the code:
>
> xres = getscalar(X_RESOLUTION, (1, 1))
> yres = getscalar(Y_RESOLUTION, (1, 1))
>
> if xres and yres:
> xres = xres[0] / (xres[1] or 1)
> yres = yres[0] / (yres[1] or 1)
> resunit = getscalar(RESOLUTION_UNIT, 1)
> if resunit == 2: # Inches
> self.info["dpi"] = xres, yres
> elif resunit == 3: # Centimeters
> self.info["dpi"] = xres * 2.54, yres * 2.54
When converting from inches to centimeters, shouldn't you rather
divide by 2.54 instead of multiplying?
>
> else: # No absolute unit of measurement.
> self.info["resolution"] = xres, yres
>
>
> Regards,
>
> Florian Hoech
> _______________________________________________
> Image-SIG maillist - Image-SIG at python.org
> http://mail.python.org/mailman/listinfo/image-sig
Regards,
Markus Kemmerling
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/image-sig/attachments/20071018/fe5b7e1d/attachment.htm
More information about the Image-SIG
mailing list