hyb
2026-01-07 c7f60dc7e9a36596f0e0d1787bd0cca4e9b57bcb
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
Ë
³òúh*8ãóÈ—ddlmZddlZddlZddlZddlmZddlmZm    Z    m
Z
m Z dZ e r ddl mZddlmZGd    „d
«Zdd „Zdd „Z                dd „ZGd„de    j«Zdd„Zdd„Zej.ej0ee«ej2ej0e«ej4ej0gd¢«ej6ej0d«y)é)Ú annotationsN)Úcasté)ÚImageÚ    ImageFileÚ ImagePaletteÚ_binaryF)ÚCallable)ÚIOcóJ—eZdZdZd
d d„Zd d„Zd d„Zdd„Zdd„Zdd„Z    dd„Z
y    )Ú    BoxReaderz}
    A small helper class to read fields stored in JPEG2000 header boxes
    and to easily step into and read sub-boxes.
    cóB—||_|dk\|_||_d|_y)Nréÿÿÿÿ)ÚfpÚ
has_lengthÚlengthÚremaining_in_box)Úselfrrs   úHH:\Change_password\venv_build\Lib\site-packages\PIL/Jpeg2KImagePlugin.pyÚ__init__zBoxReader.__init__%s#€ØˆŒØ  A™+ˆŒØˆŒ Ø "ˆÕócó®—|jr+|jj«|z|jkDry|jdk\r||jkSy)NFrT)rrÚtellrr)rÚ    num_bytess  rÚ    _can_readzBoxReader._can_read+sH€Ø ?Š?˜tŸw™wŸ|™|›~°    Ñ9¸D¿K¹KÒGàØ ×  Ñ   AÒ %à × 5Ñ 5Ñ5Ð 5àrcó—|j|«s d}t|«‚|jj|«}t    |«|krd|›dt    |«›d}t |«‚|j dkDr|xj |zc_|S)NzNot enough data in headerzExpected to read z bytes but only got ú.r)rÚ SyntaxErrorrÚreadÚlenÚOSErrorr)rrÚmsgÚdatas    rÚ _read_byteszBoxReader._read_bytes5sƒ€Ø~‰~˜iÔ(Ø-ˆCܘcÓ"Ð "àw‰w|‰|˜IÓ&ˆÜ ˆt‹9yÒ  Ø% i [Ð0DÄSÈÃYÀKÈqÐQˆCܘ#“,Ð à ×  Ñ   1Ò $Ø × !Ò ! YÑ .Õ !؈ rcóz—tj|«}|j|«}tj||«S©N)ÚstructÚcalcsizer$Úunpack)rÚ field_formatÚsizer#s    rÚ read_fieldszBoxReader.read_fieldsCs1€Ü‰˜|Ó,ˆØ×Ñ Ó%ˆÜ}‰}˜\¨4Ó0Ð0rcóz—|j}|j|«}ttj|«|«Sr&)rr$r ÚioÚBytesIO)rr+r#s   rÚ
read_boxeszBoxReader.read_boxesHs3€Ø×$Ñ$ˆØ×Ñ Ó%ˆÜœŸ™ DÓ)¨4Ó0Ð0rcó„—|jr4|jj«|jz|jkSy)NT)rrrrr)rs rÚ has_next_boxzBoxReader.has_next_boxMs0€Ø ?Š?Ø—7‘7—<‘<“> D×$9Ñ$9Ñ9¸D¿K¹KÑGÐ Gàrcó°—|jdkDr4|jj|jtj«d|_t t ttf|jd««\}}|dk(r%t t|jd«d«}d}nd}||ks|j||z
«s d}t|«‚||z
|_|S)    Nrrz>I4srz>QéézInvalid header length) rrÚseekÚosÚSEEK_CURrÚtupleÚintÚbytesr,rr)rÚlboxÚtboxÚhlenr"s     rÚ next_box_typezBoxReader.next_box_typeSs¾€à ×  Ñ   1Ò $Ø G‰GL‰L˜×.Ñ.´· ± Ô <Ø "ˆÔôœ%¤¤U 
Ñ+¨T×-=Ñ-=¸fÓ-EÓF‰
ˆˆdØ 1Š9Üœ˜T×-Ñ-¨dÓ3°AÑ6Ó7ˆD؉DàˆDà $Š;˜dŸn™n¨T°D©[Ô9Ø)ˆCܘcÓ"Ð "à $ t¡ ˆÔ؈ rN)r)rú    IO[bytes]rr:ÚreturnÚNone)rr:rAÚbool)rr:rAr;)r*ÚstrrAztuple[int | bytes, ...])rAr )rArC)rAr;) Ú__name__Ú
__module__Ú __qualname__Ú__doc__rrr$r,r0r2r?©rrr r s*„ñô
#ó ó ó1ó
1ó
ô rr c óœ—|jd«}tj|«}||j|dz
«z}tjd|«\ }}}}}}}    }    }    }    }
||z
||z
f} |
dk(r1tjd|d«} | ddzdzdkDrd    } | | fSd
} | | fS|
dk(rd } | | fS|
d k(rd } | | fS|
dk(rd} | | fSd}t |«‚)z‹Parse the JPEG 2000 codestream to extract the size and component
    count from the SIZ marker segment, returning a PIL (size, mode) tuple.éz >HHIIIIIIIIHrz>Bé&rér5úI;16ÚLÚLAéÚRGBéÚRGBAz"unable to determine J2K image mode)rr    Úi16ber'Ú unpack_fromr)rÚhdrÚlsizÚsizÚrsizÚxsizÚysizÚxosizÚyosizÚ_Úcsizr+ÚssizÚmoder"s               rÚ_parse_codestreamrcis*€ð '‰'!‹*€CÜ =‰=˜Ó €DØ
—‘˜˜q™Ó!Ñ
!€CÜ=C×=OÑ=Oؘó>Ñ:€Dˆ$d˜E 5¨!¨Q°°1°dð 5‰L˜$ ™,Ð '€DØ ˆq‚yÜ×!Ñ! $¨¨RÓ0ˆØ ‰Gd‰N˜aÑ  !Ò #؈D𠐈:ÐðˆD𠐈:Ðð
ŠØˆð ˆ:Ðð
ŠØˆð ˆ:Ðð
ŠØˆð
ˆ:Ðð3ˆÜ˜#ÓÐrcó0—|dk(ryd|zd|zzd|zz S)zµConvert JPEG2000's (numerator, denominator, exponent-base-10) resolution,
    calculated as (num / denom) * 10^exp and stored in dots per meter,
    to floating-point dots per inch.rNéþé
i'rI)ÚnumÚdenomÚexps   rÚ _res_to_dpirjˆs*€ð ‚zØØ #‰I˜˜S™Ñ ! e¨e¡mÑ 4Ð4rcó—t|«}d}d}|j«rU|j«}|dk(r|j«}n/|dk(r|j    d«ddk(rd}|j«rŒU|€J‚d}d}d}d}d}    d}
|j«rá|j«}|dk(r†|j    d    «\} } }}t | t «sJ‚t | t «sJ‚t |t «sJ‚| | f}|d
k(r |d zd kDrd }nY|d
k(rd}nP|dk(rd}nG|dk(rd}n>|dk(r8d}n4|dk(r+|dk(r&|j    d«\} }}}| d
k(r|dk(rd}n|dk(r |dvr|j    d«\}}t |t «sJ‚t |t «sJ‚d}|j    dd|zz«D]}t |t «sJ‚||kDsŒ|}Œ|d krƒtj|dk(rdnd«}
t|«D]]}g}|j    dd|zz«D]%}t |t «sJ‚|j|«Œ'|
jt|««Œ_|dk(rdnd}nò|d k(rí|j«}|j«rÍ|j«}|d!k(r§|j    d"«\}}}}}}t |t «sJ‚t |t «sJ‚t |t «sJ‚t |t «sJ‚t |t «sJ‚t |t «sJ‚t|||«}t|||«} || || f}    n|j«rŒÍ|j«rŒá||€ d#}!t|!«‚||||    |
fS)$zªParse the JP2 header box to extract size, component count,
    color space information, and optionally DPI information,
    returning a (size, mode, mimetype, dpi) tuple.Nsjp2hsftypz>4srsjpx z    image/jpxsihdrz>IIHBrrMr5rNrOrKrPrQrRrSrTscolrz>BBBIé ÚCMYKspclr)rOrPz>HBú>ÚBÚPÚPAsres srescz>HHHHBBzMalformed JP2 header)r r2r?r0r,Ú
isinstancer:rÚrangeÚappendÚgetcolorr9rjr)"rÚreaderÚheaderÚmimetyper=r+rbÚbpcÚncÚdpiÚpaletteÚheightÚwidthÚmethr_ÚenumcsÚneÚnpcÚ max_bitdepthÚbitdepthÚiÚcolorÚvalueÚresÚtresÚvrcnÚvrcdÚhrcnÚhrcdÚvrceÚhrceÚhresÚvresr"s"                                  rÚ_parse_jp2_headerr’‘sê€ôr‹]€FØ €FØ€HØ
Ø×#Ñ#Ó%ˆà 7Š?Ø×&Ñ&Ó(ˆFØ Ø WŠ_Ø×!Ñ! %Ó(¨Ñ+¨wÒ6Ø&ð ×
ð Ð ÐÐ à €DØ €DØ
€CØ     €BØ
€CØ€Gà
Ø×#Ñ#Ó%ˆà 7Š?Ø%+×%7Ñ%7¸Ó%@Ñ "ˆFE˜2˜sܘf¤cÔ*Ð *Ð*ܘe¤SÔ)Ð )Ð)ܘc¤3Ô'Ð 'Ð'ؘ6?ˆDؐQŠw˜C $™J¨!Ò+ؒؐq’ؒؐq’ؒؐq’ؒؐq“Ø’Ø WŠ_  q¢Ø!'×!3Ñ!3°GÓ!<Ñ ˆD!Q˜Øq‹y˜V r›\Ø’Ø W‹_ ¨Ò!4Ø×(Ñ(¨Ó/‰GˆBÜ˜b¤#Ô&Ð &Ð&ܘc¤3Ô'Ð 'Ð'؈LØ"×.Ñ.¨s°c¸C±iÑ/@ÓAò ,Ü! (¬CÔ0Ð0Ð0ؘlÓ*Ø#+‘Lð ,ð˜qÓ Ü&×3Ñ3¸cÀQºh±FÈEÓRÜ˜r›ò3AØ')EØ!'×!3Ñ!3°C¸3À¹9Ñ4EÓ!Fò,˜Ü)¨%´Ô5Ð5Ð5ØŸ ™  UÕ+ð,ð×$Ñ$¤U¨5£\Õ2ð 3ð # cšk‘s¨t‘Ø WŠ_Ø×#Ñ#Ó%ˆCØ×"Ñ"Ô$Ø×(Ñ(Ó*Ø˜7’?Ø9<¿¹ÈÓ9SÑ6D˜$  d¨D°$Ü% d¬CÔ0Ð0Ð0Ü% d¬CÔ0Ð0Ð0Ü% d¬CÔ0Ð0Ð0Ü% d¬CÔ0Ð0Ð0Ü% d¬CÔ0Ð0Ð0Ü% d¬CÔ0Ð0Ð0Ü& t¨T°4Ó8DÜ& t¨T°4Ó8DØÐ'¨DÐ,<Ø# T˜l˜Øð×"Ñ"Õ$ðW ×
ðv €|t|Ø$ˆÜ˜#ÓÐà x  gÐ -Ð-rcót‡—eZdZdZdZdd„Zdd„Ze        d    ˆfd„ «Zejd
d„«Zd d„Z
ˆxZ S) ÚJpeg2KImageFileÚJPEG2000zJPEG 2000 (ISO 15444)c
óJ—|jjd«}|dk(r;d|_t|j«\|_|_|j «n||jjd«z}|dk(rád|_t|j«}|\|_|_|_}|_    |||jd<|jjd«jd    «r{|jjd
«}tj|«}|jj|d
z
tj «|j «n d }t#|«‚d |_d |_d }d }    |jj)«}tj*|«j,}t7j8dd|j:zd |j|j$|j&||f«g|_y#t.$r‘d }    |jj1«}|jjd t2j4«|jj1«}|jj|«n#t.$rd }YnwxYwYŒèwxYw)NrSóÿOÿQÚj2kr5ó jP  
‡
Újp2r{rlsjp2cÿOÿQrKznot a JPEG 2000 filerrÚjpeg2k©rr)rrÚcodecrcÚ_sizeÚ_modeÚ_parse_commentr’Úcustom_mimetyper|ÚinfoÚendswithr    rUr6r7r8rÚ_reduceÚlayersÚfilenoÚfstatÚst_sizeÚ    Exceptionrr.ÚSEEK_ENDrÚ_Tiler+Útile)    rÚsigrwr{rWrr"ÚfdÚposs             rÚ_openzJpeg2KImageFile._openþs €Øg‰gl‰l˜1‹oˆØ Ð%Ò %؈DŒJÜ%6°t·w±wÓ%?Ñ "ˆDŒJ˜œ
Ø × Ñ Ö !à˜Ÿ™Ÿ ™  Q›Ñ'ˆCàÐ=Ò=Ø"”
Ü*¨4¯7©7Ó3ØRXÑO”
˜DœJ¨Ô(<¸cÀ4Ä<ؐ?Ø'*D—I‘I˜eÑ$Ø—7‘7—<‘< Ó#×,Ñ,Ð-DÔEØŸ'™'Ÿ,™, q›/CÜ$Ÿ]™]¨3Ó/FØ—G‘G—L‘L ¨!¡¬R¯[©[Ô9Ø×'Ñ'Õ)à,Ü! #Ó&Ð&àˆŒ ؈Œ à ˆØˆð     Ø—‘—‘Ó!ˆBÜ—X‘X˜b“\×)Ñ)ˆFô O‰OØØ˜Ÿ™Ñ"ØØ—‘˜TŸ\™\¨4¯;©;¸¸FÐCó     ð
ˆ    øôò    ØˆBð Ø—g‘g—l‘l“nØ—‘— ‘ ˜Q¤§ ¡ Ô,ØŸ™Ÿ™›Ø—‘— ‘ ˜SÕ!øÜò Ø’ð üð    ús7Æ9HÈ J"ÈA9JÊ J"Ê JÊJ"ÊJÊJ"Ê!J"cóx—    |jjd«}|sy|d}|dvry|jjd«}tj|«}|dk(r/|jj|dz
«dd|jd<y|jj |dz
t j«Œº)NrKr)ééÙédÚcomment)rrr    rUr¢r6r7r8)rÚmarkerÚtyprWrs     rr zJpeg2KImageFile._parse_comment2sž€ØØ—W‘W—\‘\ !“_ˆFÙØØ˜‘)ˆCؐlÑ"àØ—'‘'—,‘,˜q“/ˆCÜ—]‘] 3Ó'ˆFؐdŠ{à'+§w¡w§|¡|°F¸Q±JÓ'?ÀÀÐ'C—    ‘    ˜)Ñ$Øà—‘— ‘ ˜V a™Z¬¯©Ô5ðrcó4•—|jxs
t‰|Sr&)r¤ÚsuperÚreduce)rÚ    __class__s €rrºzJpeg2KImageFile.reduceDsø€ð|‰|Ò-œu™w™~Ð-rcó—||_yr&)r¤)rr‡s  rrºzJpeg2KImageFile.reducePs    €àˆ rcó—|jrã|jr×d|jz}|dz    }t|jd|z|z «t|jd|z|z «f|_|jd}t |dt «sJ‚|dd|j|j|dd|ddf}tj|dd|jz|d|«g|_tjj|«S)NrrrQrSrœrK) r¬r¤r:r+ržrrr9r¥rr«Úload)rÚpowerÚadjustÚtÚt3s     rr¾zJpeg2KImageFile.loadTs÷€Ø 9Š9˜ŸšØ˜Ÿ™Ñ%ˆEؘa‘ZˆFäT—Y‘Y˜q‘\ FÑ*¨eÑ3Ó4ܐT—Y‘Y˜q‘\ FÑ*¨eÑ3Ó4ðˆDŒJð —    ‘    ˜!‘ ˆAܘa ™d¤EÔ*Ð *Ð*ؐA‘$q‘'˜4Ÿ<™<¨¯©°a¸±d¸1±g¸qÀ¹tÀA¹wÐGˆBÜ"Ÿ™¨¨1©¨v¸¿    ¹    Ñ/AÀ1ÀQÁ4ÈÓLÐMˆDŒIä×"Ñ"×'Ñ'¨Ó-Ð-r)rArB)rAzVCallable[[int | tuple[int, int], tuple[int, int, int, int] | None], Image.Image] | int)r‡r:rArB)rAzImage.core.PixelAccess | None) rErFrGÚformatÚformat_descriptionr°r ÚpropertyrºÚsetterr¾Ú __classcell__)r»s@rr”r”úsTø„Ø €FØ0Ðó2
óh6ð$ð    .ð    ô    .óð    .ð ‡]]òóð÷.rr”có$—|jd«S)N)r—r™)Ú
startswith)Úprefixs rÚ_acceptrËfs€Ø × Ñ ØFó ðrcóx—|j}t|t«r|j«}|j    d«s|j dd«rd}nd}|j dd«}|j dd«}|j dd«}|j d    d
«}|j d d«}    |    5t|    t tf«rtd „|    D««s d }
t|
«‚|j dd«} |j dd«} |j dd«} |j dd«}|j dd«}|j dd«}|j dd«}|j dd«}|j d«}t|t«r|j«}|j dd«}d}t|d«r    |j«}|||||    | | | ||||||||f|_ tj||tj dd|j"zd|«g«y#t$rd}YŒ`wxYw)Ns.j2kÚno_jp2Fr˜ršÚoffsetÚ tile_offsetÚ    tile_sizeÚ quality_modeÚratesÚquality_layersc3óHK—|]}t|ttf«–—Œy­wr&)rrr:Úfloat)Ú.0Ú quality_layers  rú    <genexpr>z_save.<locals>.<genexpr>‚s èø€ò
Ø8EŒJ}¤s¬E l× 3ñ
ùs‚ "z,quality_layers must be a sequence of numbersÚnum_resolutionsrÚcodeblock_sizeÚ precinct_sizeÚ irreversibleÚ progressionÚLRCPÚ cinema_modeÚnoÚmctÚsignedrµÚpltrr¦r›rœ)Ú encoderinforrrDÚencoder£ÚgetÚlistr9ÚallÚ
ValueErrorÚhasattrr¦r©Ú encoderconfigrÚ_saver«r+)ÚimrÚfilenamer¢ÚkindrÎrÏrÐrÑrÓr"rÙÚ    cblk_sizerÛrÜrÝrßrárârµrãr®s                      rrìrìps%€à >‰>€Dä(œCÔ Ø—?‘?Ó$ˆØ×јÔ! T§X¡X¨h¸Ô%>؉àˆà X‰Xh Ó %€FØ—(‘(˜=¨$Ó/€KØ—‘˜ dÓ+€IØ—8‘8˜N¨GÓ4€LØ—X‘XÐ.°Ó5€NØÐ!ܐ>¤D¬% =Ô1Ü ñ
ØIWô
ô
ð=ˆÜ˜‹oÐà—h‘hÐ0°!Ó4€OØ—‘Ð)¨4Ó0€IØ—H‘H˜_¨dÓ3€MØ—8‘8˜N¨EÓ2€LØ—(‘(˜=¨&Ó1€KØ—(‘(˜=¨$Ó/€KØ
(‰(5˜!Ó
€CØ X‰Xh Ó &€F؏h‰hyÓ!€Gܐ'œ3ÔØ—.‘.Ó"ˆØ
(‰(5˜%Ó
 €Cà     €B܈r8Ôð    Ø—‘“ˆBð
    ØØØØØØØØØØØ ØØ
ØØ ð!€BÔô&‡OOB˜œYŸ_™_¨X°vÀÇÁÑ7GÈÈDÓQÐRÕSøô-ò    ØŠBð    úsÇH+È+ H9È8H9)z.jp2z.j2kz.jpcz.jpfz.jpxz.j2cz    image/jp2)rr@rAztuple[tuple[int, int], str])rgr:rhr:rir:rAz float | None)rr@rAzetuple[tuple[int, int], str, str | None, tuple[float, float] | None, ImagePalette.ImagePalette | None])rÊr;rArC)ríz Image.Imagerr@rîz str | bytesrArB)Ú
__future__rr.r7r'ÚtypingrÚrrrr    Ú TYPE_CHECKINGÚcollections.abcr
r r rcrjr’r”rËrìÚ register_openrÃÚ register_saveÚregister_extensionsÚ register_mimerIrrú<module>rúsèðõ #ã    Û    Û Ýç5Ó5à€ ÙÝ(Ý÷GñGóTó>5ðb.Øðb.ðób.ôRi.i×)Ñ)ôi.óXó@TðN€×ѐO×*Ñ*¨O¸WÔEØ€×ѐO×*Ñ*¨EÔ2à€×ÑØ×ÑÒLôð€×ѐO×*Ñ*¨KÕ8r