Bug 124288 - options for chosen format while saving
Summary: options for chosen format while saving
Status: RESOLVED FIXED
Alias: None
Product: krita
Classification: Applications
Component: File formats (show other bugs)
Version: unspecified
Platform: openSUSE Linux
: NOR wishlist
Target Milestone: ---
Assignee: Cyrille Berger
URL:
Keywords:
: 130484 136700 147836 (view as bug list)
Depends on:
Blocks:
 
Reported: 2006-03-26 12:05 UTC by Maciej Pilichowski
Modified: 2012-05-15 11:52 UTC (History)
3 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Maciej Pilichowski 2006-03-26 12:05:45 UTC
Version:            (using KDE KDE 3.5.1)
Installed from:    SuSE RPMs

Please add and show appropriate option dialog for chosen format just before saving the file. For example when I chose jpg Krita just saved the file -- but I would like to set the quality/size factor.
Comment 1 Halla Rempt 2006-03-26 15:28:05 UTC
This is fixed for 1.5.
Comment 2 Maciej Pilichowski 2006-05-18 13:22:03 UTC
I reopened this report since there is exactly such option included but is was _example_.

Still, there is no optional preview window, there is no information of the size of the image after saving, etc. 
Comment 3 Cyrille Berger 2006-10-06 10:38:41 UTC
*** Bug 130484 has been marked as a duplicate of this bug. ***
Comment 4 Cyrille Berger 2006-10-06 10:39:53 UTC
please details the "etc" ?
Comment 5 Maciej Pilichowski 2006-10-06 16:59:06 UTC
I can include screenshot from the Gimp if it is necessary. But those options -- allowing user to tune the details of the file.
Comment 6 Cyrille Berger 2006-10-06 18:50:49 UTC
ah I see I have considered adding them when first writting the dialog, and then I didn't, they are mostly useless. So one of this day I will do the size of jpeg file and preview, but not the rest, unless someone shows me a real usecase of when those options have to be twisted.
Comment 7 Halla Rempt 2006-11-02 11:45:58 UTC
*** Bug 136700 has been marked as a duplicate of this bug. ***
Comment 8 Richard Bos 2006-12-02 12:12:41 UTC
I just wanted to open a feature request like this one.
A collegue takes photos from birds and uploads these to http://birdpix.nl
The sites only accepts jpg formatted photos not bigger than 150kB.
(see http://www.birdpix.nl/faq.php#3)
His photos are in raw format with a size of 8MB.
He searched for an application that shows the size of the end result while
adjusting the export paramaters.  As gimp does that, he is most likely going
to use for this purpose.  Using gimp prevents him from opening the photo,
export it, check the file size and re-iterate this over and over again.

I the slider tried it myself in gimp, and it works very comfortable!

Hopefully this is the use case your were looking for ;) ?
Comment 9 Cyrille Berger 2007-07-13 10:57:45 UTC
*** Bug 147836 has been marked as a duplicate of this bug. ***
Comment 10 Gabriel Bouvigne 2007-07-13 15:49:04 UTC
Coming from Bug 147836, I'd like to add my own use case about this feature: weekly photo competitions from dpchallenge.com, where entries are limited to 150kB.

In my opinion this could be in an "export..." dialog that would be different from the usual "save as" one, in order to no clutter "save as" (even if internally the code could be shared).

Ideally, the extended save as/export would feature:
*before/after preview
*flat/progressive selection
*compression level
*color subsampling modes
*keep or discard ipct/exif

Here is how it looks under PSP:
http://gabriel.mp3-tech.org/misc/optimized_jpeg_dialog.png
Comment 11 Maciej Pilichowski 2007-07-13 18:35:11 UTC
> In my opinion this could be in an "export..." dialog that would be different
> from the usual "save as" one, in order to no clutter "save as" 

(If I understand you correctly) this would clutter Krita itself. It is better to have one dynamic dialog (with advanced tab or something like that), than one simply function, and another extended.

Principle of the least surprise -- I want to save the picture AND set the quality setting (for example), why I should not save it but export it?
Comment 12 Gabriel Bouvigne 2007-07-13 19:34:31 UTC
One dynamic dialog is a possibility, and I agree that you should/could have access to quality settings while saving. But should you also have access to progressive/flat, subsampling, keep/discard exif/ipct settings?

I guess that it's a matter of choice, it's just that some novice user could be afraid to see so many options while saving as jpeg.

Pros for a separate "export" option:
Usually, export makes it clear that this is not for saving a copy on which you would work further. Example: under OpenOffice you can save as MS word format (which should keep most of the doc attributes), but you export to create a pdf (which will loose most of the doc attributes).

You work under Krita within a .kri image with multiple layers and the like. If you want to keep working on it, but create an optimized jpeg at one point, you could either:
*flatten/merge all layers, save as jpeg, undo layers merging
or
*export as jpeg, which will keep your existing workspace with all the layers 
Comment 13 Thomas Zander 2007-07-13 19:57:56 UTC
On Friday 13 July 2007 19:34:33 Gabriel Bouvigne wrote:
> Pros for a separate "export" option:


I was under the impression that in KOffice2.0 we would remove the export 
menu item completely since its similarity to 'save as' is so strong that 
users tend to not have a clue what the difference is.

And as this is a menu option, you need to know the difference *before* 
selecting it, so it isn't great usability to keep both of them.
Comment 14 Maciej Pilichowski 2007-07-13 20:04:06 UTC
> I was under the impression that in KOffice2.0 we would remove the export 
>  menu item completely since its similarity to 'save as' is so strong that 
>  users tend to not have a clue what the difference is. 

Brave decision, sounds good, I like it!

However since the similarity is almost 100% what about "export" checkbox in the "save dialog" for power users? But maybe it is not the right place to discuss save/export after all? :-)
Comment 15 Cyrille Berger 2007-07-13 20:45:22 UTC
@Gabriel, I have a bad feeling for presenting different options in a save dialog and in the export dialog, as for beginner user being confused, that's why those options should be hidden by default, and second point, krita is intented to be an "advanced" tool, meening with option for advanced users.

@Thomas and Maciej, while it is definitively not the place (maybe opening an other bug report for it) to discuss it, I would still like to have kind of export (maybe called as "save a copy" like in the gimp or inkscape) because when someone choose "save as" in jpeg, then, after, if he save he save as a jpeg and he might lose his work, so we definitively need something like "export"
Comment 16 Cyrille Berger 2007-07-14 12:48:40 UTC
I have put the current design of how the dialog could look in next version (it's supposed to have a high priority on my todo list, but as long as it is not coded it's just vapour) on the koffice wiki :

http://wiki.koffice.org/index.php?title=Krita/JPEG_Save_Dialog

Comments and critics, it's now or never :) (I have a special interest for good names for the tabs)
Comment 17 Cyrille Berger 2007-07-14 12:48:54 UTC
I have put the current design of how the dialog could look in next version (it's supposed to have a high priority on my todo list, but as long as it is not coded it's just vapour) on the koffice wiki :

http://wiki.koffice.org/index.php?title=Krita/JPEG_Save_Dialog

Comments and critics, it's now or never :) (I have a special interest for good names for the tabs)
Comment 18 Maciej Pilichowski 2007-07-14 14:37:30 UTC
I like it, however few comments:
1.a) if the preview is on where does it go?
1.b) size -- use normal symbols, KB for example
1.c) size -- remove small and big from quality, quality is bad or good (those labels are correct)
1.d) please add grid points to the slider

2.a) optimize... ? I just guess you mean smoothing, but I am not 100% sure
2.b) same as (1.d)

Small wish. When you save the image, first you see save dialog, you choose the filename, then you see this dialog? Is this correct? 
If yes -- could you please add edit-box with filename (read-only, but copyable) at the top of this dialog plus button to reselect again the filename.
Comment 19 Cyrille Berger 2007-07-14 14:57:27 UTC
1a) on the canvas (like filters for next version)
1b) Ko is french for KB :D

2a) no idea, I saw this in the gimp dialog, I will have to have a close look to libjpeg option for that dialog page before implementing

(1d and 2b done in the svn version)

For the small wish, it's close to impossible because of the filter link system of koffice, I guess writting the name of the file in the window title bar can't hurt.
Comment 20 Maciej Pilichowski 2007-07-14 15:07:06 UTC
Cyrille, thank you for the answer. One more thing:
quality -- would it possible to add textual widget, to display "75%" for example. Reason, suppose you saving images for some purpose (web?) with the same quality settings and you want to remember it, it is easier to remember "80%" than "the third grid point from the right".
Comment 21 Thomas Zander 2007-07-14 15:30:33 UTC
about the labels under the slider; I suggest to reuse the labels from the current dialog "Smallest" and "Best".
Comment 22 Cyrille Berger 2007-07-14 16:13:37 UTC
Well we had some complaints about png dialog (I wonder why the jpeg dialog wasn't change at the same time) because we had under the slider "smallest / fastest" or something like that, and people didn't like it, but maybe you suggested to have "smallest / biggest" "worse / best", I started by this but "worse" didn't looks like a good choice of word :/
Comment 23 Maciej Pilichowski 2007-07-14 19:37:06 UTC
AFAIR I complained about it :-) 

Thomas, you cannot have two different terms as opposites.

smaller ------> faster
wider -----> better
brighter ----> deeper
and so on. UI principles.

If we are talking about words choosing, I would opt for
[Quality] poor -------------> best

But I am not native English speaker, so this is maybe a bad judgment.
Comment 24 Thomas Zander 2007-07-14 19:58:42 UTC
Hi Maciej,
The words are not opposites, naturally.
The words use a very natural ability that everyone has (provided this is translated properly) to see that the complete left is "Small" and thus the opposite is "Big".  But everyone wants small, so then the question is not really relevant.  But wait, there is the side effect! If you make it bigger the quality gets better. So the opposite if small is "Best".

I've done quite some user tests some years ago with a very similar concept and all of the test subjects understood this without fail.

So, I'm not convinced by the complaints that Krita got; maybe someone was just making the same correction on my language as you are, but then you are completely missing the point.  The dialog is about helping make the proper choice of quality setting, nothing more.
And this text does that job very well, I see no reason to change it.

Cheers
Comment 25 Maciej Pilichowski 2007-07-14 20:24:44 UTC
Thomas, I use only English for bug reporting purposes :-) 

I don't say I do not _understand_ the concept
small ------------> best

but it is extremely bizarre for me (*). Good intentions are ok, but the effect is not that ok, if you want to have both size relevant labels and quality what about such layout
[quality]  poor              best    
           |=====================>
[filesize] small              big


(*) Longer explanation: each time I have to "translate" this UI concept from the small<->best world to small<->big world :-) It stops me each time for a few seconds, thus (imho) it is not productive.
Comment 26 Gabriel Bouvigne 2007-07-14 22:15:22 UTC
My I suggest this? :

smaller filesize ----------------- better quality

Of course, those words are not opposite at all, but in my opinion it's effective to make people understand the tradeoff, while presenting 2 choices that are both considered as positive (unlike "poor quality/big filesize"), while not cluttering the dialog box too much.

Of course I am a bit biased as those labels are my usual recommendation about Lame (mp3) configuration dialogs.

*restart marker:
This is an error resilience option, in order to be able to restart decoding if some bits got corrupted. Not sure if it's actually needed by most users (but I'm sure it's not a quality related option) 

*DCT method:
This is an old relic from the past. Actually it select the DCT implementation that will be used during encoding, in order to improve compression speed if you select integer implementation. IMHO today's computers are fast enough to always select the accurate floating point version (you don't plan to have many people using Krita on a computer without FPU, don't you?)
Comment 27 Maciej Pilichowski 2007-07-15 17:04:01 UTC
> My I suggest this? : 
>  smaller filesize ----------------- better quality 

It is already there, and I think it is a bad UI.
 
> but in my opinion it's effective to make people understand the tradeoff,

My point is still this -- it is not that problem understanding such dialog, but lack of natural feel. In other words -- response time counts, if you have to _think_ what the dialog says it is bad UI.

And it is just a minor complain -- (answer fast! though) does quality and size is in linear ratio? In other words, when the slider is in the middle do you have guarantee that the file is 50% of size and at the same time 50% of the quality? 
Me? I don't know and I wouldn't bet on "yes" or "no".

IMHO the best design is simple slider with quality labels, quality % plus each time calculated size. Easy, natural, nothing to be confused about.
Comment 28 Cyrille Berger 2007-07-15 21:43:44 UTC
@gabriel, so "restart marker" and dct are not needed ? And DCT is only interesting when encoding, it won't make things faster for decoding ? (there are still slow system for decoding)
Comment 29 Gabriel Bouvigne 2007-07-16 10:22:10 UTC
*restart marker:
My understanding is that it would only be needed over unreliable networks, so IMHO I don't think it's worth offering it in the UI.

*DCT thing:
The DCT method is not mentioned within the JPEG file. Choice of DCT is only a "kludge" from the IJG in order to speed up encoding/decoding at the expense of accuracy. However, selecting the accurate fp one or the faster integer approximate one doesn't impact decoding side.
Comment 30 Cyrille Berger 2007-07-16 10:44:36 UTC
SVN commit 688522 by berger:

update to follow the latest discution:
* add a filesize label
* remove DCT and Restart marker

CCBUG:124288


 M  +61 -93    kis_wdg_options_jpeg2.ui  


--- trunk/koffice/filters/krita/jpeg/kis_wdg_options_jpeg2.ui #688521:688522
@@ -5,8 +5,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>413</width>
-    <height>343</height>
+    <width>336</width>
+    <height>296</height>
    </rect>
   </property>
   <property name="windowTitle" >
@@ -23,7 +23,7 @@
    <item>
     <widget class="QLabel" name="label" >
      <property name="text" >
-      <string>Size: 100ko</string>
+      <string>Size: 100KB</string>
      </property>
     </widget>
    </item>
@@ -39,6 +39,19 @@
       <layout class="QVBoxLayout" >
        <item>
         <layout class="QGridLayout" >
+         <item rowspan="2" row="0" column="0" >
+          <widget class="QLabel" name="textLabel1" >
+           <property name="text" >
+            <string>Quality:</string>
+           </property>
+           <property name="alignment" >
+            <set>Qt::AlignTop</set>
+           </property>
+           <property name="wordWrap" >
+            <bool>false</bool>
+           </property>
+          </widget>
+         </item>
          <item row="0" column="1" >
           <layout class="QHBoxLayout" >
            <item>
@@ -73,10 +86,48 @@
            </item>
           </layout>
          </item>
-         <item row="1" column="0" >
-          <widget class="QLabel" name="textLabel1" >
+         <item row="1" column="1" >
+          <layout class="QHBoxLayout" >
+           <item>
+            <widget class="QSlider" name="qualityLevel" >
+             <property name="toolTip" >
+              <string>These settings determine how much information is lost during compression</string>
+             </property>
+             <property name="minimum" >
+              <number>0</number>
+             </property>
+             <property name="maximum" >
+              <number>100</number>
+             </property>
+             <property name="singleStep" >
+              <number>1</number>
+             </property>
+             <property name="pageStep" >
+              <number>1</number>
+             </property>
+             <property name="value" >
+              <number>80</number>
+             </property>
+             <property name="orientation" >
+              <enum>Qt::Horizontal</enum>
+             </property>
+             <property name="tickPosition" >
+              <enum>QSlider::TicksBothSides</enum>
+             </property>
+             <property name="tickInterval" >
+              <number>10</number>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="QSpinBox" name="spinBox_2" />
+           </item>
+          </layout>
+         </item>
+         <item row="2" column="0" >
+          <widget class="QLabel" name="textLabel1_2" >
            <property name="text" >
-            <string>Quality:</string>
+            <string>File size:</string>
            </property>
            <property name="alignment" >
             <set>Qt::AlignTop</set>
@@ -86,34 +137,6 @@
            </property>
           </widget>
          </item>
-         <item row="1" column="1" >
-          <widget class="QSlider" name="qualityLevel" >
-           <property name="toolTip" >
-            <string>These settings determine how much information is lost during compression</string>
-           </property>
-           <property name="minimum" >
-            <number>0</number>
-           </property>
-           <property name="maximum" >
-            <number>100</number>
-           </property>
-           <property name="singleStep" >
-            <number>1</number>
-           </property>
-           <property name="pageStep" >
-            <number>1</number>
-           </property>
-           <property name="value" >
-            <number>80</number>
-           </property>
-           <property name="orientation" >
-            <enum>Qt::Horizontal</enum>
-           </property>
-           <property name="tickInterval" >
-            <number>10</number>
-           </property>
-          </widget>
-         </item>
          <item row="2" column="1" >
           <layout class="QHBoxLayout" >
            <item>
@@ -207,39 +230,14 @@
            <property name="orientation" >
             <enum>Qt::Horizontal</enum>
            </property>
-          </widget>
-         </item>
-        </layout>
-       </item>
-       <item>
-        <layout class="QHBoxLayout" >
-         <item>
-          <widget class="QCheckBox" name="checkBox_8" >
-           <property name="text" >
-            <string>Use restart marker:</string>
+           <property name="tickPosition" >
+            <enum>QSlider::TicksBothSides</enum>
            </property>
-          </widget>
-         </item>
-         <item>
-          <widget class="QLabel" name="label_4" >
-           <property name="enabled" >
-            <bool>false</bool>
+           <property name="tickInterval" >
+            <number>10</number>
            </property>
-           <property name="text" >
-            <string>Frequency (rows):</string>
-           </property>
           </widget>
          </item>
-         <item>
-          <widget class="QSpinBox" name="spinBox" >
-           <property name="enabled" >
-            <bool>false</bool>
-           </property>
-           <property name="minimum" >
-            <number>1</number>
-           </property>
-          </widget>
-         </item>
         </layout>
        </item>
        <item>
@@ -279,36 +277,6 @@
          </item>
         </layout>
        </item>
-       <item>
-        <layout class="QHBoxLayout" >
-         <item>
-          <widget class="QLabel" name="label_6" >
-           <property name="text" >
-            <string>DCT Method:</string>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <widget class="QComboBox" name="comboBox_2" >
-           <item>
-            <property name="text" >
-             <string>Integer</string>
-            </property>
-           </item>
-           <item>
-            <property name="text" >
-             <string>Fast integer</string>
-            </property>
-           </item>
-           <item>
-            <property name="text" >
-             <string>Floating points</string>
-            </property>
-           </item>
-          </widget>
-         </item>
-        </layout>
-       </item>
       </layout>
      </widget>
      <widget class="QWidget" name="tab_3" >
Comment 31 Maciej Pilichowski 2007-07-16 11:45:58 UTC
* add a filesize label 
* remove DCT and Restart marker 

Just a thought -- in general, if the format A supports feature B, Krite should support it too. If it is well known in advance it is rarely used, etc. please put it rather in "backward compatibility" tab (or something like that) instead of totally removing it. By removing it you are stating -- "for full control use another app".
10000 times you won't need such feature, but once when it is about to "save your life" :-) you will be grateful for full set of features.
Comment 32 Gabriel Bouvigne 2007-07-16 12:08:11 UTC
You might want to keep "restart marker" somewhere (even thought it would not be choice), but please, no re-addition of DCT choice, as it's not a format feature (btw, is Krita using the accurate FP version?)
Comment 33 Janet 2008-03-15 14:33:13 UTC
So I guess this is the correct bug report for requesting "jpg save dialog - quality should be shown in percent"? No need to open another wishlist entry? 
It's hard to reliably work with "optimum" and "minimum" and "nothing in between", please provide some numeral quality indicator, it's more precise.

To see the file size when adjusting the quality with the slider would also be very helpful - and to choose if I want to save the exif data and the thumbnail this time (as default) or not (smaller file size and privacy issue, depends on where you want to publish the picture).
Comment 34 Halla Rempt 2012-05-15 11:52:18 UTC
I think the jpg dialog is pretty okay now.