From: Till Kamppeter <till.kamppeter@gmail.com>
To: Michael Sweet <msweet@msweet.org>
Cc: "printing-architecture@lists.linux-foundation.org"
<printing-architecture@lists.linux-foundation.org>,
Jay Berkenbilt <ejb@ql.org>, Vikrant Malik <vikrant@iitk.ac.in>
Subject: Re: [Printing-architecture] Make use of extended color spaces on IPP printers
Date: Thu, 27 May 2021 20:04:30 +0200 [thread overview]
Message-ID: <aae2e939-01a4-bdee-ddc7-940e93351eec@gmail.com> (raw)
In-Reply-To: <2427DA0B-9BB7-462B-A29E-0A3366E504A3@msweet.org>
As discussed on the gs-devel mailing list
https://ghostscript.com/pipermail/gs-devel/2021-May/010456.html
we came to the conclusion that for PDF files for which we do not know
the color space the data comes in we default to sRGB in general, and
default only to AdobeRGB if it is available in 16-bit per color and high
color depth is requested via print-quality=high, as most PDFs are sRGB
and if we convert sRGB to AdobeRGB with only 8 bit color depth, we can
easily get ugly color banding.
Now I have questions about raster input files, either images or
raster-only PDFs:
If I look into the source code of the pclmtoraster filter of
cups-filters (cupsfilters/pclmtoraster.cxx) I see that when readin the
embedded bitmaps from a PDF file there only occur /DeviceGray,
/DeviceRGB, and /DeviceCMYK color spaces. How do I determine whether I
have sRGB or AdobeRGB? Vikrant?Ans what is the default/IPP/PWG-standard
color space of /DeviceCMYK?
Also, if I have images (JPEG, TIFF, PNG, ...) how do I know which coloe
space they are? imagetoraster seems not to determin whether images are
sRGB or AdobeRGB.
Till
On 09/05/2021 15:49, Michael Sweet wrote:
> Till,
>
>> On May 9, 2021, at 5:20 AM, Till Kamppeter <till.kamppeter@gmail.com> wrote:
>> ...
>> 1. A user wants to print photos in best possible (wide gammut) color reproduction quality. So he either sets his camera to produce AdobeRGB JPEGs or he shoots RAW and saves the processed RAW images in 16-bit-per-color AdobeRGB. He sends his images out of his photo editor/manager to the printer, but the application sends print jobs in PDF. So we get a raster-only PDF with the raster data embedded being 16-bit AdobeRGB (assuming that the printer supports it as the application's print dialog does a get-printer-attributes request and so knows what the printer supports).
>
> The best solution here is to look at the image color space and try to match it to the closest printer-supported color space.
>
>> In this case in the CUPS filtering process we have to discover at first whether the incoming PDF is raster-only. In this case we would not render it but pass it through pclmtoraster to extract the raster data with its color space info (AdobeRGB). We do not convert this to sRGB or anything else, but pass on a Raster file in AdobeRGB.
>
> Again, you want to look at the input data to determine its color space, and then pass it through or convert as needed.
>
>> Question here: Do we need to discover that the PDF is raster-only and then use pclmtoraster? Or can we simply do the standard rendering (GhostScript, Poppler, or MuPDF) and tell the renderer (by command line for example) that we want AdobeRGB output? Would the renderer pass on the AdobeRGB data without conversion, especially not doing AdobeRGB -> sRGB -> AdobeRGB?
>
> Ideally we want whatever converts the file to know the input color space(s) and the printer's supported color spaces. Then we can make a semi-intelligent decision about the color space that preserves as much of the original data as possible.
>
>> 2. Another user wants to write a review of mobile phone providers, containing pictures and logos of the candidates (one of them is T-Mobile). In order to avoid the providers feeling stepped on their toes he wants to have best color reproduction. So he creates the print output (which is in PDF) in AdobeRGB as he knows that the printer supports it.
>
> Again, if the source images are sRGB, it is best to stay in sRGB until the last possible moment.
>
>> My question: Now how can the CUPS filters auto-discover that the PDF is in AdobeRGB and therefore the PDF needs to get rasterized in AdobeRGB? Is there some tool for that? Some special call of GhostScript or QPDF? Or can I uncompress the PDF and then search it for "/ColorSpace" keys? Also how to rasterize if there are some sRGB and some AdobeRGB pieces in it?
>
> Images are almost always embedded as objects in the PDF file and references in the content streams, so as to take best advantage of the available compression filters that PDF offers. The typical exceptions are small icons or logos that wouldn't benefit from this treatment and probably wouldn't be adversely affected by an incorrect choice about color space (so long as the RIP does ICC).
>
> Therefore, you can examine the embedded image objects (all of the current tools provide utilities for extracting them) as a hint to what color space might be best if you have to choose between AdobeRGB and sRGB.
>
> That said, if you have a printer ICC profile and the printer supports device RGB (or device gray), then *that* is the best color space for the "last mile" to the printer.
>
> ________________________
> Michael Sweet
>
>
>
next prev parent reply other threads:[~2021-05-27 18:04 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-27 17:46 [Printing-architecture] Human-readable strings for standard IPP options/choices/attributes/propertirs Till Kamppeter
2021-04-27 18:02 ` Michael Sweet
2021-04-27 18:10 ` Till Kamppeter
2021-04-28 8:17 ` Till Kamppeter
2021-04-28 11:43 ` Michael Sweet
2021-05-07 18:52 ` [Printing-architecture] Make use of extended color spaces on IPP printers Till Kamppeter
2021-05-07 19:53 ` Michael Sweet
2021-05-07 22:11 ` Till Kamppeter
2021-05-08 0:04 ` Michael Sweet
2021-05-08 23:52 ` Solomon Peachy
2021-05-09 1:24 ` Michael Sweet
2021-05-09 2:24 ` Solomon Peachy
2021-05-09 2:54 ` Michael Sweet
2021-05-09 8:20 ` Till Kamppeter
2021-05-09 13:41 ` Michael Sweet
2021-05-09 14:03 ` Solomon Peachy
2021-05-09 20:32 ` Michael Sweet
2021-05-09 19:26 ` Till Kamppeter
2021-05-09 20:34 ` Michael Sweet
2021-05-09 20:43 ` Till Kamppeter
2021-05-09 21:03 ` Michael Sweet
2021-05-08 22:45 ` Till Kamppeter
2021-05-09 1:38 ` Solomon Peachy
2021-05-09 9:20 ` Till Kamppeter
2021-05-09 13:49 ` Michael Sweet
2021-05-09 20:14 ` Till Kamppeter
2021-05-09 20:55 ` Michael Sweet
2021-05-09 21:31 ` Till Kamppeter
2021-05-10 1:08 ` Michael Sweet
2021-05-27 18:04 ` Till Kamppeter [this message]
2021-05-27 19:04 ` Solomon Peachy
2021-05-28 12:59 ` Michael Sweet
2021-05-29 19:19 ` Till Kamppeter
2021-05-29 22:32 ` Michael Sweet
2021-05-30 19:56 ` Till Kamppeter
2021-05-30 20:53 ` Michael Sweet
2021-05-30 21:50 ` Till Kamppeter
2021-05-31 3:12 ` Michael Sweet
[not found] ` <d5082b23-8eb7-be84-db5c-42bdde3ba5ac@canonical.com>
2021-05-31 13:24 ` Michael Sweet
2021-05-31 15:03 ` Till Kamppeter
2021-05-31 18:13 ` Michael Sweet
2021-05-31 19:38 ` Till Kamppeter
2021-06-01 0:54 ` Michael Sweet
2021-05-25 17:43 ` Till Kamppeter
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aae2e939-01a4-bdee-ddc7-940e93351eec@gmail.com \
--to=till.kamppeter@gmail.com \
--cc=ejb@ql.org \
--cc=msweet@msweet.org \
--cc=printing-architecture@lists.linux-foundation.org \
--cc=vikrant@iitk.ac.in \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.