Merge pull request #7299 from radarhere/pdf

This commit is contained in:
Hugo van Kemenade 2023-08-04 11:43:09 +03:00 committed by GitHub
commit 95257dff87
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 13 additions and 5 deletions

View File

@ -43,8 +43,9 @@ def test_save(tmp_path, mode):
@skip_unless_feature("jpg_2000")
def test_save_rgba(tmp_path):
helper_save_as_pdf(tmp_path, "RGBA")
@pytest.mark.parametrize("mode", ("LA", "RGBA"))
def test_save_alpha(tmp_path, mode):
helper_save_as_pdf(tmp_path, mode)
def test_monochrome(tmp_path):
@ -57,8 +58,8 @@ def test_monochrome(tmp_path):
def test_unsupported_mode(tmp_path):
im = hopper("LA")
outfile = str(tmp_path / "temp_LA.pdf")
im = hopper("PA")
outfile = str(tmp_path / "temp_PA.pdf")
with pytest.raises(ValueError):
im.save(outfile)

View File

@ -1486,7 +1486,7 @@ files. Different encoding methods are used, depending on the image mode.
unavailable
* L, RGB and CMYK mode images use JPEG encoding
* P mode images use HEX encoding
* RGBA mode images use JPEG2000 encoding
* LA and RGBA mode images use JPEG2000 encoding
.. _pdf-saving:

View File

@ -159,6 +159,11 @@ def _save(im, fp, filename, save_all=False):
# params = f"<< /Predictor 15 /Columns {width-2} >>"
dict_obj["ColorSpace"] = PdfParser.PdfName("DeviceGray")
procset = "ImageB" # grayscale
elif im.mode == "LA":
filter = "JPXDecode"
# params = f"<< /Predictor 15 /Columns {width-2} >>"
colorspace = PdfParser.PdfName("DeviceGray")
procset = "ImageB" # grayscale
elif im.mode == "P":
filter = "ASCIIHexDecode"
palette = im.getpalette()

View File

@ -490,6 +490,8 @@ j2k_encode_entry(Imaging im, ImagingCodecState state) {
if (strcmp(im->mode, "RGBA") == 0) {
image->comps[3].alpha = 1;
} else if (strcmp(im->mode, "LA") == 0) {
image->comps[1].alpha = 1;
}
opj_set_error_handler(codec, j2k_error, context);