ImprovePhotoPrinting

Summary

Printing office documents, e-mails, and web pages usually just works. You simply click File -> Print, usually do not change any parameters, and your document comes out on A4 or Letter paper. If you open a photo manager or editor application and want to print photos like you get them from the lab (usually one picture filling one page) it gets ugly: In GNOME applications (shotwell, f-spot, GIMP, ...) you have to click File -> Page Setup, choose the printer and then the desired paper size, after that you click File -> Print, choose all other printing-relevant parameters, and then finally click "Print". In KDE programs (digikam) you have to set the four margins manually to zero to print borderless, geeqie does not get the printer parameters from CUPS, ... In addition, the printing functions of photo applications are not well tested. In Maverick, f-spot immediately crashes when sending a print job and GIMP sends blank pages.

Rationale

If a user sees a nice photo in his photo manager and would like to have it on paper, he should be able to print it in high photo quality and scaled to fill the sheet with a few simple clicks and in an intuitive, user-friendly way.

Scope

Photo managers/editors under Linux

Design

A good example for the print functionality in a photo manager is fl-photo (in Universe), a photo manager written by Mike Sweet, author of CUPS (probably Mike saw this problem already). In one dialog one chooses a layout (1, 2, 4 photos per sheet, calendar, manual) and the printer settings including the page size. The layout gets scaled into the page size taking into account the printer's unprintable margins (giving borderless prints if printer settings are chosen appropriately). Another good step is that in eog (Eye of GNOME, upstream version 2.31.5) the "Page Setup" dialog got removed and the page size and orientation is set in the "Print" dialog, where one expects to set them.

Special attention must be payed to the handling of the page size. Especially for printing photos it must be very easy for the user to choose the page size from the sizes which the actually used printer offers. Here is why:

  • In contrary to an office document, a photo has no absolute size, it is simply a bitmap, a given number of pixels wide and high. For printing it on paper it needs to be scaled to the paper's absolute size. So page size is not a parameter nailed down by the document.
  • The page sizes for photos are usually different ones that the page sizes for documents. Usually A4 or Letter for documents and 10x15cm/4x6in for photos.
  • Borderless photo printing is implemented very differently by the different printer drivers, for example HPLIP uses special "Borderless" paper sizes a little bit bigger than the actual paper and with zero margins, whereas Gutenprint has a boolean "Borderless" option which probably scales up the printed bitmap somewhat when turned on.

Other important aspects are:

  • Series of photos usually have images in both landscape and portrait format. For the "one photo fills one page" printing and also for sheets with multiple photos which get cut apart, photos should get rotated automatically to fit the paper, but one should have the possibility to turn auto-rotating off if the sheets are used as album pages.
  • The photo application should give easy access to the printer settings and hold its own user defaults for them. For example if a user has only one inkjet printer and uses it for both photos and documents, it is usually set to defaults for document printing (A4/Letter, main tray, normal paper, duplex, standard margins) and for photo printing completely different settings are used (10x15/4x6 paper, photo tray, photo paper, one-sided, borderless).
  • The program should not impose its own margins, but use the printer's ones for the given page size (which can be easily queried from CUPS). For landscape printing it should be taken into account that the paper's upper edge gets the pictures right edge and so on when applying the printer's margins.

Problems in existing applications:

  • GTK applications (shotwell, f-spot, the GIMP, ...): Page size has to be set in the "Page Setup" dialog by choosing the printer at first and then the paper size. Also the orientation (Landscape/Portrait) has to be manually set under "Page Setup". After that the "Print" dialog has to be opened to choose the printer again and to set all other parameters.
  • KDE applications (digikam, ...): Page size needs to be set 3 times (once on "Page" tab and two times on "Advanced" tab of the "Properties" sub dialog of the print dialog), margins have to be set manually, as the margin settings do not get updated when changing the page size on the "Page" tab of the "Properties" sub dialog of the print dialog. Also parameters in the "Options >>" section of the print dialog need to be set.

  • Geeqie (former GQView): Has its own print dialog without CUPS support, which means that page size and margins need to get set completely manually and all printer-specific parameters have to be set as print queue defaults in system-config-printer.
  • f-spot: In Maverick not printing at all, simply crashing when clicking "Print" in the print dialog (LP: #657505).

  • GIMP (standard dialog which comes with GIMP): Not printing at all in Maverick, as it simply sends blank pages to CUPS (LP: #658267).

Implementation

Code

Data preservation and migration

Outstanding issues

BoF agenda and discussion

UDS Natty:

Further discussion

Acknowledgments


CategorySpec

Specs/N/ImprovePhotoPrinting (last edited 2010-10-19 19:21:41 by ua-178)