mirror of
https://github.com/storytold/pdfcraft.git
synced 2026-11-09 09:51:18 -06:00
M11: an indexed image's palette is read once it matters, within 4 KiB; a colour key keeps its image
From a review of the spellings an indexed image can take: - The palette was read for every 1-bit indexed image, resampled or not, and twice each. Images share a table, so 1,000 images sharing one with 16 MiB of raw data took 16 to 60 s, none of them resampled. It is now read only for an image about to be resampled, and a table over 4 KiB is refused before it is copied or decoded, since no palette needs that. - A colour key can hide the dark sample a tie goes to, so a thin rule of the other was lost: a white rule on a hidden black went from 255 to the backdrop's 128. An image with a colour key now keeps its resolution. Grey had this since #5426 and is covered too. - `/Indexed` by reference, and a base of `[/DeviceRGB]`, are the same colour space and are read so. `/I`, an inline abbreviation, and a real hival aren't, and such an image is left alone. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AmsdeUCdTaD72jkDw2pJKY
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
e2adbe7faa
commit
6ad95f0aa4
@@ -63,10 +63,11 @@ let report = optimize_with_progress(&mut doc, &settings, &mut |stage| keep_going
|
||||
mask (a 0, or a 1 with an inverting decode array), and the darker of an indexed image's two
|
||||
palette entries. Only images whose dark sample is known so are averaged: `DeviceGray` (grey and
|
||||
RGB packed to one bit among them), image masks, and indexed images over `DeviceGray` or
|
||||
`DeviceRGB`, whose palette is read (Rec. 601 luma for RGB), with no decode array or one of two
|
||||
different numbers, and not drawn or listed where `/DefaultGray` or `/DefaultRGB` is or may be
|
||||
in force (an indexed image referred to from beyond the page and form resources read, as an
|
||||
annotation's appearance, may be). Not a separation or a DeviceN, whose tint transform isn't read, calibrated or ICC
|
||||
`DeviceRGB`, whose palette is read (Rec. 601 luma for RGB; a table of at most 4 KiB), with no
|
||||
decode array or one of two different numbers, and not drawn or listed where `/DefaultGray` or
|
||||
`/DefaultRGB` is or may be in force (an indexed image referred to from beyond the page and form
|
||||
resources read, as an annotation's appearance, may be). Not one with a colour key, which can
|
||||
hide the dark sample a tie would go to. Not a separation or a DeviceN, whose tint transform isn't read, calibrated or ICC
|
||||
grey, or an indexed image over another base or whose two entries look alike. Not one with a soft mask, whose own size would have to
|
||||
follow; not a halftone or a dither, most of whose new pixels would cover both black and white,
|
||||
so that taking the sample covering more would turn its tones solid (a 50% screen black, a 25%
|
||||
|
||||
Reference in New Issue
Block a user