On Thu, 30 Aug 2007 00:57:44 +0200, [EMAIL PROTECTED] wrote:
> Gimp should not decide what is "better" because it cannot know what is  
> required so cannot make that choice.
> This sort of "surprise" behaviour is precisely the kind of thing I was  
> warning against in making covert changes to user data.

I think that you are trying to shoot the wrong target.  The main
problem that I described in my previous message is not the fact that
GIMP tries to preserve the quality of the original image or decide
what is "better".  The problem is that some changes that you make when
saving one file are propagated to all other files that you save later.
The recent updates to the JPEG plug-in make this problem more obvious,
but it also affects all other file plug-ins.

Before jumping to conclusions about where the problem comes from, please
try the following exercise:
- Load or create a GIF animation (2-3 layers should be enough).
- Save it as A.gif and let's pretend that you don't like the speed at
  which that animation runs so you set the delay to 333ms and check
  the box "Use delay entered above for all frames".
- Close that image.
- Open or create a new, totally unrelated GIF animation.
- Save that image as B.gif.  Although you probably wanted to keep its
  settings or at least save it with the default values, you see that
  "Use delay entered above for all frames" is now checked.  The
  settings from an unrelated image that is now closed are used for
  saving your new image.  If you do not want to destroy the timing of
  your animation, you have to pay attention and uncheck that box
  before you save the file.

Does it make sense that two unrelated images influence each other?

But things are even more confusing if you keep some images open.  Try
the following exercise, with PNG this time:
- Load or create a new image.
- Save it as A.png but set its compression level to 0 because you want
  to waste some disk space and disable all other options because you
  do not want to save the image comment, creation date, etc.
- Keep A.png open and load or create another image.
- Save the second image as B.png.  Although you probably wanted to use
  your default settings (which can be customized with the buttons
  "Load/Save defaults"), you see that the same parameters as A.png are
  now used when saving this image.  You do not like this, so you set
  the compression level back to 9 (you can also check or uncheck some
  of the other boxes) and save the image.
- With both A.png and B.png still open, load or create a third image.
- Save that image as C.png.  Now you see that C.png inherited the
  settings from B.png, the last image that was saved.
- Make some small changes to A.png and save it again using a new name
  such as D.png.  By now, maybe you expect that saving D.png would use
  the same settings as C.png, the last image that was saved?  But no,
  this time you see that D.png keeps the settigns from A.png because
  it was still open.
- Now if you make some changes to B.png and give it a new name E.png,
  then that file will use the settings from B.png.  But if you had
  closed and re-opened B.png, then you would see that E.png is saved
  with the parameters from D.png, not B.png.  Are you confused yet?

If you work on two files in parallel (A.png and B.png) and save them
alternatively as your work progresses, then any new file that you open
and save will inherit the settings from A.png or B.png, depending on
which one was saved last.

And if you are still convinced that all of this makes sense, try to
play with some settings that are enabled or disabled depending on the
contents of the original image.  For example, if the original PNG
image has transparency (alpha channel), then you will be able to check
or uncheck the box "Save color values from transparent pixels".  This
setting may be propagated to other PNG images that also have an alpha
channel.  But if you load a PNG image without alpha channel, then this
option will not be available.  After saving that last file, can you
correctly guess if that box will be automatically checked or not when
you load another PNG image with transparency and then try to save it?

I consider the current situation to be broken for all file plug-ins.
Instead of re-using the settings from whatever image was saved
recently, each image should keep its own settings and should not be
influenced by what you do with the other images.  The save settings
should come from the original image or from the user defaults if the
image has never been saved yet.  It should of course be possible for
the user to customize these defaults (currently, this can only be done
for JPEG and PNG, but the old bug #63610 is about extending this to
other plug-ins).

I hope that you are convinced that something is wrong with the
behavior of the file plug-ins.

Now, regarding the JPEG plug-in, I see two ways forward:

1) Do not re-use the values from previous (unrelated) invocations of
   the plug-in.  This ensures that each file keeps its own settings,
   as described above.  The same fix can also be applied to the PNG
   plug-in because it uses similar parasites for saving image settings
   and it also has the "Load/Save defaults" buttons.  But other
   plug-ins will still have the wrong behavior because it is too late
   to fix all of them before 2.4.

2) Instead of trying to fix the plug-ins for 2.4, make sure that they
   are all broken in the same way.  This would mean that the JPEG
   plug-in in 2.4 will not try to use the quality settings from the
   original image even if they are better than the defaults.  We would
   go back to the previous behavior and postpone the real fix
   explained above until the next development cycle.  Those who
   complained that GIMP was "destroying" their images by saving them
   at a lower quality than expected will just have to wait for 2.6.

I don't care about which way we go.  Both of them have good and bad
sides and both of them will leave some users frustrated or confused.

Gimp-developer mailing list

Reply via email to