ASPN ActiveState Programmer Network
ActiveState
/ Home / Perl / PHP / Python / Tcl / XSLT /
/ Safari / My ASPN /
Cookbooks | Documentation | Mailing Lists | Modules | News Feeds | Products | User Groups


Recent Messages
List Archives
About the List
List Leaders
Subscription Options

View Subscriptions
Help

View by Topic
ActiveState
.NET Framework
Open Source
Perl
PHP
Python
Tcl
Web Services
XML & XSLT

View by Category
Database
General
SOAP
System Administration
Tools
User Interfaces
Web Programming
XML Programming


MyASPN >> Mail Archive >> image-sig
image-sig
Re: [Image-SIG] Problem with JPEG and CMYK color space
by kevin other posts by this author
Apr 16 2006 5:26AM messages near this date
Re: [Image-SIG] Problem with JPEG and CMYK color space | Re: [Image-SIG] Problem with JPEG and CMYK color space
I've attached a patched JpegImagePlugin.py file (sorry for the 14.5kb 
attachment to a mailing list).  It should fix the inversion problem both 
upon load and upon save of CMYK JPEG files.

Modifications can be found starting on the following lines:

line 35:  add ImageChops to the import list, for inverting images

line 273:  comment out previous patch for Adobe Photoshop 2.5 CMYK files... 
I sure hope nobody uses 2.5 anymore, and this patch breaks newer versions.

line 288:  invert CMYK images after load

line 416:  invert CMYK images before save


I'm sure there are more elegant an efficient ways of fixing this problem, 
but this works.  I hope it helps you, as I've had the same issues myself.

Fredrik - if you're ok with the crude methods of fixing this problem, can 
you include it in future builds?  Thanks.

Kevin.


----- Original Message ----- 
From: <kevin@[...].com> 
To: <kevin@[...].com> ; "Cesare Leonardi" <ced@[...].com>; 
<image-sig@[...].org> 
Sent: Saturday, April 15, 2006 2:01 PM
Subject: Re: [Image-SIG] Problem with JPEG and CMYK color space


>  In the JPEGImagePlugin.py module, there's a hack to handle Photoshop 2.5 
>  CMYK JPEG images (around line 273)... that's causing half the problem upon 
>  loading JPEG's.  By commenting that out, you get a proper image, although 
>  it's still inverted.
> 
>  I can't seem to find the right place to re-invert the image upon load, but 
>  I'll see what I can find.  Anyone with suggestions would be welcome. 
>  There's probably a better way to do this though, so the data is read 
>  correctly in the first place (in CMYK, 0,0,0,0 = white, 255,255,255,255 = 
>  full black... this is probably the problem).
> 
>  Kevin.
>  ----- Original Message ----- 
>  From: <kevin@[...].com>
>  To: "Cesare Leonardi" <ced@[...].com>; <image-sig@[...].org>
>  Sent: Saturday, April 15, 2006 1:32 PM
>  Subject: Re: [Image-SIG] Problem with JPEG and CMYK color space
> 
> 
> > Actually, the problem is that PIL also has problems reading CMYK JPEG 
> > files
> > apparently.  I just proved that by loading your CMYK test files and doing 
> > a
> > "show", then loading a CMYK TIFF file and doing a show (note that to use
> > show, it converts to RGB with the internal conversion, so the colors 
> > won't
> > be perfect).  The TIFF loaded fine, the JPEG didn't.
> >
> > The patch I've submitted fixes the problem with saving incorrectly, but
> > doesn't fix the reading issue (yet).  So, as long as your source CMYK 
> > image
> > doesn't come from a JPEG file it's ok (with my invert patch).
> >
> > I'll see if I can spend some time looking at that this weekend.
> >
> > Kevin.
> > ----- Original Message ----- 
> > From: "Cesare Leonardi" <ced@[...].com>
> > To: <image-sig@[...].org>
> > Sent: Friday, April 14, 2006 9:38 AM
> > Subject: Re: [Image-SIG] Problem with JPEG and CMYK color space
> >
> >
> >> kevin@[...].com ha scritto:
> >>> When saving a CMYK file to JPG, PIL seems to invert the colors.  I've
> >>> submitted a patch to Fredrik already for this, and it should be in the
> >>> next major build.
> >>>
> >>> Adding a simple invert to the image before saving will help.
> >>
> >> Thanks all for your responses.
> >>
> >> Kevin, i've made some tests following what you've suggested and here is
> >> the results.
> >> To obtain the color inversion i've used the function invert() in
> >> ImageChops module. I've added the code and the new sample images in this
> >> page (see "part 2"):
> >> http://www.bernispa.com/pil/index.html
> >>
> >> As you can see your suggestion works partially.
> >> Images 02 and 03 (that was particular in "part 1") are the only that
> >> after the inversion looks ok.
> >> All the other images looks less dark, but the color are always different
> >> than the original.
> >> The particular thing to note is that the images produced by the
> >> inversion looks the same as Image.show(). Seems that show() already do
> >> the inversion.
> >>
> >> There is another thing that i have noted only now: the images saved by
> >> PIL are often less big than the original. Sometimes much less. For
> >> example:
> >> test01: 1435 KB   test01-dst: 198 KB   test01-dst-invert: 198 KB
> >> test04: 1237 KB   test01-dst: 405 KB   test01-dst-invert: 405 KB
> >> test08: 1647 KB   test01-dst: 777 KB   test01-dst-invert: 776 KB
> >> test09: 1715 KB   test01-dst: 665 KB   test01-dst-invert: 665 KB
> >> test10: 2032 KB   test01-dst: 659 KB   test01-dst-invert: 659 KB
> >> I can think that PIL optimize the compression, but that difference are
> >> really big. Isn't it suspicious? I expect that saving an image in a new
> >> file without modifications produces a file very similar to the original,
> >> isn't it?
> >> The original images was not produced by me so the author can have used
> >> low compression. I cannot make tests since i haven't a program that can
> >> save in CMYK (Gimp seems not able).
> >>
> >> Regards.
> >>
> >> Cesare.
> >> _______________________________________________
> >> Image-SIG maillist  -  Image-SIG@[...].org
> >> http://mail.python.org/mailman/listinfo/image-sig
> >>
> >>
> >>
> >
> >
> > _______________________________________________
> > Image-SIG maillist  -  Image-SIG@[...].org
> > http://mail.python.org/mailman/listinfo/image-sig
> >
> >
> >
> 
> 
> 
> 
>  
Thread:
Berni CED
Cesare Leonardi
kevin
kevin
kevin
Cesare Leonardi
Cesare Leonardi
Berni CED
Fredrik Lundh
kevin
Cesare Leonardi
Cesare Leonardi
Steve Holden
kevin
kevin
kevin
Cesare Leonardi
Abel Deuring

Privacy Policy | Email Opt-out | Feedback | Syndication
© ActiveState Software Inc. All rights reserved