1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
Ë
³òúhM1ã óΗdZddlmZdgd¢gd¢gdœdgd¢gd¢gdœdgd    ¢gd
¢gdœdgd ¢gd ¢gdœdgd ¢gd¢gdœdgd¢gd¢gdœdgd¢gd¢gdœdgd¢gd¢gdœdgd ¢gd¢gdœdœ    Zy)u
JPEG quality settings equivalent to the Photoshop settings.
Can be used when saving JPEG files.
 
The following presets are available by default:
``web_low``, ``web_medium``, ``web_high``, ``web_very_high``, ``web_maximum``,
``low``, ``medium``, ``high``, ``maximum``.
More presets can be added to the :py:data:`presets` dict if needed.
 
To apply the preset, specify::
 
  quality="preset_name"
 
To apply only the quantization table::
 
  qtables="preset_name"
 
To apply only the subsampling setting::
 
  subsampling="preset_name"
 
Example::
 
  im.save("image_name.jpg", quality="web_high")
 
Subsampling
-----------
 
Subsampling is the practice of encoding images by implementing less resolution
for chroma information than for luma information.
(ref.: https://en.wikipedia.org/wiki/Chroma_subsampling)
 
Possible subsampling values are 0, 1 and 2 that correspond to 4:4:4, 4:2:2 and
4:2:0.
 
You can get the subsampling of a JPEG with the
:func:`.JpegImagePlugin.get_sampling` function.
 
In JPEG compressed data a JPEG marker is used instead of an EXIF tag.
(ref.: https://exiv2.org/tags.html)
 
 
Quantization tables
-------------------
 
They are values use by the DCT (Discrete cosine transform) to remove
*unnecessary* information from the image (the lossy part of the compression).
(ref.: https://en.wikipedia.org/wiki/Quantization_matrix#Quantization_matrices,
https://en.wikipedia.org/wiki/JPEG#Quantization)
 
You can get the quantization tables of a JPEG with::
 
  im.quantization
 
This will return a dict with a number of lists. You can pass this dict
directly as the qtables argument when saving a JPEG.
 
The quantization table format in presets is a list with sublists. These formats
are interchangeable.
 
Libjpeg ref.:
https://web.archive.org/web/20120328125543/http://www.jpegcameras.com/libjpeg/libjpeg-3.html
 
é)Ú annotationsé)@éééé'é2é.é>éDrééé&ré5éAr rrérrrr r rrrrrr r r r    rrrr r r r r
rrr r r r r r rr r r r r r r r r r r r r r )@éré ré6r r r réérrr r r rrré+éBr r r rrrrr r r r rrrr r r r r r r r r r r r r r r r r r r r r r r r r r r r r )Ú subsamplingÚ quantization)@ré rrréréré rérrrrrré rréé#é/rr rrr"é%r$é@rrrr"ré3r&r&rrr"r%r'r&r&r&rrr#r$r&r&r&r&rrr$r&r&r&r&r&)@ér r(rrr"ré0r ér r(rr"r#rr(r rér"rr
rrr(r+rrrrr&rrr"rrr)r&r&r"r"rrr)é?r&r&rr#r
rr&r&r&r&r)rrr&r&r&r&r&)@éér.r-é    rrrr.ér0r-éé
rrr.r0r0r-r2rér*r-r-r-rrr r*rr/r1r2rrrrrrr2rr rrrrrrr3r*rrrrrrr*rrrrr)@ér4r!rr"rrrr4rrrrrrrr!rr(rrrrrrrrrrrrrr"rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr)@rrrrér.r0r-rrrrr5r.r0r-rrrrr.r0r4r/rrrr.r0r4r/rr5r5r.r0r1r2rrr.r.r0r4r2rrrr0r0r4r/rrrrr-r-r/rrrrr)@r5r5r0r/r!r r r r5r.r-rr3rrrr0r-r/r3rrrrr/rr3rrrrrr!r3rrrrrrr rrrrrrrr rrrrrrrr rrrrrrr)@ér6r6r6r6r6r6r6r6r6r6r6r6r6r6r6r6r6r6r6r6r6r6rr6r6r6r6r6r6rrr6r6r6r6r6rrr5r6r6r6r6rrr5r5r6r6r6rrr5r5r5r6r6rrr5r5r5r5)@r6r6r6rrr5r5r5r6r6r6rr5r5r5r5r6r6r6r5r5r5r5r5rrr5r5r5r5r5r5rr5r5r5r5r5r5r5r5r5r5r5r5r5r5r5r5r5r5r5r5r5r5r5r5r5r5r5r5r5r5r5)@r r3r3rrr#é"r(r3rrr*r"rrrr3rr(rrrrrrr*rrrrrrrr"rrrrrrr#rrrrrrrr7rrrrrrrr(rrrrrrr)@rr*r+rrrr(r(r*rrr3r3rrrr+rr3r3rrrrrr3r3rrrrrrr3rrrrrrrrrrrrrrr(rrrrrrrr(rrrrrrr)@rr1r1rr(rrr(r1r/r/rr r*rrr1r/r2rr*rrrrrrrrrrrr(r r*rrrrrrr*rrrrrrrrrrrrrrr(rrrrrrr)@r!rr!rrrr(r(rr3r3r3r3rrrr!r3r3r3rrrrrr3r3rrrrrrr3rrrrrrrrrrrrrrr(rrrrrrrr(rrrrrrr)@r-r.r.r-r/rrrr.r0r0r-r1r2rrr.r0r0r-r2rrrr-r-r-rrrrrr/r1r2rrrrrrr2rrrrrrrrrrrrrrrrrrrrrr)@r4r4r!rrrr(r(r4rrr3r3rrrr!rr3r3rrrrrr3r3rrrrrrr3rrrrrrrrrrrrrrr(rrrrrrrr(rrrrrrr)@r5r5r0r/r!r r r r5r.r-r2r3rrrr0r-r/r3rrrrr/r2r3rrrrrr!r3rrrrrrr rrrrrrrr rrrrrrrr rrrrrrr)    Úweb_lowÚ
web_mediumÚweb_highÚ web_very_highÚ web_maximumÚlowÚmediumÚhighÚmaximumN)Ú__doc__Ú
__future__rÚpresets©óúBH:\Change_password\venv_build\Lib\site-packages\PIL/JpegPresets.pyú<module>rGs ðñ?õB#ð./ò @ò @ð. ñ!ð&./ò @ò @ð.ñ ð&./ò @ò @ð.ñ ð&/0ò @ò @ð/ ñ!ð&./ò!@ò!@ð.ñ ð&./ò @ò @ð.ñ ð&./ò @ò @ð.ñ ð&./ò @ò @ð.ñ ð&./ò @ò @ð.ñ ñsl rE