)Ej}dddlmZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl m Z m Z ddlmZddlmZddlmZddlmZdd lmZd Zerdd lmZmZdd lmZddZddZddZ ddZ!ddZ"iddde!fddde!fddd e!fd!d"d#e!fd$d%d&efd'd(d)e!fd*d+d,e!fd-d.d/e!fd0d1d2d3d4e!fd5d6d7e!fd8d9d:e!fd;dd?d@e!fdAdBdCe!fdDdEdFe!fdGdHidIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]efd^d_d`e"fdadbdcefdddedfefdgdhdie!fdjdkdlefdmdndoefdpdqdrefidsdtduefdvdwdxefdydzd{efd|d}d~efdddefdddefdddefdddefdddefdddefdddefdddefdddefdddefddddddddddddddddddde fd Z#ddZ$Gdde j Z%ddZ&ddZ'dddddddZ(dZ)ddddZ*ddÄZ+ddȄZ, ddd˄Z-e j.e%j/e-e$e j0e%j/e,e j1e%j/gd̢e j2e%j/dͦdS)) annotationsN)Image ImageFile)i16be)i32be)o8)o16be)presetsF)IOAny MpoImageFileself JpegImageFilemarkerintreturnNonec|jJt|jddz }tj|j|dS)N)fpi16readr _safe_read)rrns EC:\PYTHON\MyICR_Suite\python\Lib\site-packages\PIL/JpegImagePlugin.pySkipr?sI 7    DGLLOOq A !$$$$$c|jJt|jddz }tj|j|}d|dz}||j|<|j||f|dkr|drt|dx|j d<}t|d|j d < |d }t|d t|d f}|d kr ||j d<n'|dkr!td|D|j d<||j d<||j d<dS#t$rYdSwxYw|dkrm|drXd|j vr|j dxx|ddz cc<dS||j d<|j |z dz|_dS|dkr;|dr&|dd d |j d<dS|dkr!|dr ||j d<dS|dkr1|dr|j|dS|dkr%|drd}|j d i} |||d!zd"kr|d!z }t||} |dz }||} |d | zz }||d zz }t%||} |d!z }|||| z} | d#krIt%| d$d%z t| d!t%| d d%z t| d&d'| | <n| | | <|| z }||d zz }|||d!zd"kdSdS#t&j$rYdSwxYw|d(krS|d)r>t|d|j d*< |d+}||j d,<dS#t*$rYdSwxYw|dkrP|d-r=|d!d|j d.<|j |z d!z|j d/<dSdSdS)0NrAPPsJFIFjfif jfif_version rdpic3 K|] }|dzV dS)RQ@N).0ds r zAPP..bs&(H(HaT(H(H(H(H(H(Hr jfif_unit jfif_densitysExifexifhttp://ns.adobe.com/xap/1.0/xmpsFPXRflashpix ICC_PROFILEsPhotoshop 3.0 photoshops8BIMiri ) XResolutionDisplayedUnitsX YResolutionDisplayedUnitsYsAdobeadobe adobe_transformsMPFmpmpoffset)rrrrrappapplistappend startswithinfodivmodtuple Exceptiontell _exif_offsetspliticclist setdefaulti32structerror IndexError)rrrsrLversionr2r3offsetr?codename_lensizedatarIs rr!r!Es  7    DGLLOOq ATWa((A   CDHSMLa!!! ALL11&)!Qii/ &G$*7C$8$8 .! 5!Iq!99c!Rjj0LA~~#/ %  a#((H(H<(H(H(H#H#H % %.DIk "(4DIn % % %    DD  6  all;77  TY   If   122 &      !DIf  $  2Q 6D    6  all+NOO 777A..q1 % 6  all955  ! * 6  all+;<<  A 6  all+?@@ I((b99  FVaZ'(G33! 1f~~! V9!h,&&1*$1f~~! &4-/06>>'*4||e';+.tQ<<'*4||e';+.tR== ''IdOO'+IdO$&1*$1FVaZ'(G3333332|    DD  6  all844  AYY ' ;eO,;DI' ( ( (    DD  6  all844 ABB% $!%  2Q 6 *    s7 (E E ECM99N  N O O%$O%c|jJt|jddz }tj|j|}||jd<||jd<|jd|fdS)NrcommentCOM) rrrrrrPrLrMrN)rrrr]s rrfrfs{ 7    DGLLOOq ATWa((ADIiDHUOL #####rc^|jJt|jddz }tj|j|}t|dt|df|_|j|j|jjkrd|_|d|_ |j dkrd|j d}t||d|_ |j dkrd |_ n@|j dkrd |_ n-|j d krd |_ nd|j d }t||dvrdx|j d<|j d<|jr||j|jddt!|jkr'd|jD}d|}nd}||j d<g|_t%dt!|dD]K}|||dz}|j|d|ddz|ddz|dfLdS)Nrrrr)zcannot handle z -bit layersr$LRGBr@CMYKz -layer images) progressive progression c"g|] }|dd S)r>Nr.)r/ps r zSOF..s 444!qv444rr icc_profiler6r")rrrrr_size_imrbimbits SyntaxErrorlayers_moderPrWsortlenjoinrangelayerrN) rrrr]msgprofilervits rSOFrs: 7    DGLLOOq ATWa((AQC1II%DJ x TW\ 9 9!DI yA~~5ty555#A$DK {a       9t{999# 111>?? - 49]#; |   <?2 #dl"3"3 3 344t|444G((7++KKK#. -  1c!ffa ?? a!a%iL 1Q41QqTBY!=>>>>??rcR|jJt|jddz }tj|j|}t |r|d}|dzdkrdnd}d|dzz}t ||krd}t |tj|dkrdnd|d|tj d kr|dkr fd tD|j |d z<||d}t |dSdS) Nrrrwr@zbad quantization table markerBHlittlec g|] }| Sr.r.)r/rrcs rruzDQT..s$C$C$CT!W$C$C$Crr") rrrrrrr|arraysys byteorderbyteswap zigzag_index quantization) rrrr]v precision qt_lengthrrcs @rDQTrs@ 7    DGLLOOq ATWa((A a&&  aDr'Q,,AAQ  B& q66I  1Cc"" "{)q..33c1Qy[>JJ =H $ $Q MMOOO$C$C$C$Cl$C$C$C!b&! ijjM a&&     riSOF0z Baseline DCTiSOF1zExtended Sequential DCTrlSOF2zProgressive DCTiSOF3zSpatial losslessiDHTzDefine Huffman tableiSOF5zDifferential sequential DCTrmSOF6zDifferential progressive DCTiSOF7zDifferential spatiali)JPG ExtensionNiSOF9zExtended sequential DCT (AC)rnSOF10zProgressive DCT (AC)iSOF11zSpatial lossless DCT (AC)iDACz%Define arithmetic coding conditioningiSOF13z Differential sequential DCT (AC)roSOF14z!Differential progressive DCT (AC)iSOF15zDifferential spatial (AC)i)RST0z Restart 0Ni)RST1z Restart 1Ni)RST2z Restart 2Ni)RST3z Restart 3Ni)RST4z Restart 4Ni)RST5z Restart 5Ni)RST6z Restart 6Ni)RST7z Restart 7Ni)SOIzStart of imageNi)EOIz End of imageNSOSz Start of scanirzDefine quantization tableiDNLzDefine number of linesiDRIzDefine restart intervaliDHPzDefine hierarchical progressioniEXPzExpand reference componentr#APP0zApplication segment 0r4APP1zApplication segment 1r:APP2zApplication segment 2iAPP3zApplication segment 3iAPP4zApplication segment 4iAPP5zApplication segment 5iAPP6zApplication segment 6iAPP7zApplication segment 7iAPP8zApplication segment 8iAPP9zApplication segment 9iAPP10zApplication segment 10iAPP11zApplication segment 11iAPP12zApplication segment 12r=APP13zApplication segment 13rFAPP14zApplication segment 14iAPP15zApplication segment 15i)JPG0z Extension 0Ni)JPG1z Extension 1Ni)JPG2z Extension 2N)JPG3z Extension 3N)JPG4z Extension 4N)JPG5z Extension 5N)JPG6z Extension 6N)JPG7z Extension 7N)JPG8z Extension 8N)JPG9z Extension 9N)JPG10z Extension 10N)JPG11z Extension 11N)JPG12z Extension 12N)JPG13z Extension 13NrfComment) iiiiiiiiiiiprefixbytesboolc,|dS)Ns)rO)rs r_acceptrNs   _ - --rcleZdZdZdZddZdfd Zdfd Zdd ZddZ ddZ ddZ ddZ ddZ xZS)rJPEGzJPEG (ISO 10918)rrcr|jJ|jd}t|sd}t|d}dx|_|_d|_g|_i|_i|_ i|_ i|_ g|_ g|_ |d}|dkr-||jdz}t|}n|jd}W|tvr|t|\}}}| ||||dkr<|j}|jd krd }t#jd d |jzd|d fg|_nV|jd}n9|dvrd}n2|dkr|jd}nd}t||dS)Nrhznot a JPEG filerTrrrkCMYK;Ijpegrr>rizno marker found)rrrr|r{r}rUr _huffman_dc _huffman_acrrLrMrWrMARKERmoder_Tilerbtile_read_dpi_from_exif)rr]rrname descriptionhandlerrawmodes r_openzJpegImageFile._open[sw""" GLLOOqzz ##Cc"" " #$# DK79 +-+-24%'02 $&  '!ADyy Q'FFGLLOOF{{-3AY*k7&GD!$$$;;"iGyF**"*!0BAQS}UU!DIGLLOOk!!fGLLOO'!#&&&? 'B   """""r list[Any]cbt|j|jgzSN)super __getstate__r}r)r __class__s rrzJpegImageFile.__getstate__s'ww##%%dj(AAArstatecx|dd\|_|_t|dS)Nr6)r}rr __setstate__)rrrs rrzJpegImageFile.__setstate__s7"') TZ U#####r read_bytesrrc|jJ|j|}|s%tjrt |ds d|_dS|S)z internal: read more image data For premature EOF and LOAD_TRUNCATED_IMAGES adds EOI marker so libjpeg can finish decoding N_endedTs)rrrLOAD_TRUNCATED_IMAGEShasattrr)rrr]s r load_readzJpegImageFile.load_reads[ w""" GLL $ $ Y4 WT8=T=T DK;rr str | Nonerbtuple[int, int] | None0tuple[str, tuple[int, int, float, float]] | Nonect|jdkrdS|jrdS|jd\}}}}d}|j}t |t sJ|ddkr|dvr ||_|df}|rt|jd|dz|jd|dz}dD] } || krn |J|d|d|d|dz | zdz | z|dz|d|dz | zdz | z|dzf}|jd| zdz | z|jd| zdz | zf|_| }tj ||||g|_|df|_dd|d|z |d|z f} |j | fS) Nrrrj)riYCbCrr)r)r@rrrrh) rr decoderconfigrb isinstancerRr~minrxrrr) rrrbr0eoascale original_sizer]boxs rdraftzJpegImageFile.drafts ty>>Q  4   4Yq\ 1a !U##### Q45==T^33DJbA   ! Q/1a1HIIE!  A::E===!!1!q1$*QqT11!q1$*QqT1 A  9Q>$- ( ( "  !7Jdm"L M M M M  $    %CS// ! D!! !S & ! ! ! ! ! ! ! ! ! ! ! ! ! ! !  $      $    W\ W\  sx.B BB%D9!C& D&C**D-C*.D2D DDD>D.-D>. D;8D>:D;;D>dict[int, Any] | Nonec t|Sr)_getexifrs rr'zJpegImageFile._getexifs~~rcd|jvs d|jvrdS |}|d}|d} t|d|dz }n#t$r|}YnwxYwt j|rd}t ||dkr|d z}||f|jd<dS#tjtttt tf$rd |jd<YdSwxYw) Nr+r5i(irrzDPI is not a numberrhr-)Hr*) rPgetexiffloat TypeErrormathisnanr rZr[KeyErrorr|ZeroDivisionError)rr5resolution_unit x_resolutionr+rs rrz!JpegImageFile._read_dpi_from_exifs DI  ty!8!8 F &<<>>D"6lO # # #" #z# &+ oo%!##t "CxDIe    L        & & & &DIe     &s4$B*AB* A)&B*(A))?B**8C&%C&c t|Sr)_getmpr(s rr5zJpegImageFile._getmpsd||r)rr)rr)rrrr)rrrr)rrrbrrr)rr%)__name__ __module__ __qualname__formatformat_descriptionrrrrrr$r'rr5 __classcell__)rs@rrrWs F+7#7#7#7#rBBBBBB$$$$$$"&&&&P>&&&&:rr%cdd|jvrdS|S)Nr5)rPr+_get_merged_dictr(s rr'r's. TYt <<>> * * , ,,rc  |jd}n#t$rYdSwxYwtj|}|d}|drdnd}ddlm} ||}| |j | |t|}n$#t$r}d} t| |d}~wwxYw |d } n$#t$r}d } t| |d}~wwxYwg} |d } t| D]} t!j|d | | d z}d}tt%||}t'|ddzt'|ddzt'|ddz|ddzdz |ddzdz |ddzd}|ddkrd|d<nd} t| dddd d!d"d#d$}||d%d&|d%<||d<| || |d <n$#t$r}d'} t| |d}~wwxYw|S)(NrJr)sMM*>?r))rrrrrr)rrrrrr)rrrrrrrz Image.Imagect|tr |jdvrdS|jddd|jdddz|jdddz}t|dS)N)rr@rrrhr)r rr}r samplingsr[)rzsamplings r get_samplingrsw b- ( (BI,?,?rx{1Q3"(1+ac"22RXa[15EEH ==2 & &&rr IO[bytes]r str | bytescr t|j}n-#t$r }d|jd}t||d}~wwxYw|j}d|ddD}|dd}|dd} |d } |d krd}d } d } n|t vr;t |} d}| dd} | d } nt|tsd }t|| t vr!t | dd} t| tr)| t vr t | d } | d krd} nL| dkrd} nC| dkrd} n:| dkrd} n1| d kr+|j dkrd}t|t|} d7d} | d kr-|j dkrd}t|t|d d} | | } |dd} d}|dx}r[d}||z }t||krd}t|td|zt|z}| d |zd!z|zz } |d"x}rd#}||z }g}|r)||d|||d}|)d}|D]d}td|zt|z}| d$|zd%zt#|zt#t|z|zz } |dz }e|d&|jd&}|d'd(p|d)d(}|d*d(}|d+d}t|t&jr|}t||krd,}t||||d-d||d.d(|d/d|| |d0d|d1d| || |f|_|s|r|jd2krd3|jdz|jdz}nF|d4ks|dkrd|jdz|jdz}n|jd|jdz}|r|t|d5zz }| r|t| dzz }n0t1t|d5zt| dz}t3j||t3jd6d|jzd|g|dS)8Nzcannot write mode z as JPEGc,g|]}t|Sr.)round)r/xs rruz_save..s 5 5 5588 5 5 5rr+rqualityr subsamplingqtableskeeprzInvalid quality settingz4:4:4rz4:2:2rz4:2:0rz4:1:1rz3Cannot use 'keep' when original image is not a JPEGKstr | tuple[list[int], ...] | list[list[int]] | dict[int, list[int]] | Nonerlist[list[int]] | NonecSttrn dDfdtdt dDn$#t $r}d}t ||d}~wwxYwtt ttfrttr)fdtt Dn$tt rtdt cxkrdksnd}t | tD]N\}}t |dkrd}t|ttj d ||<On$#t$r}d}t ||d}~wwxYwSdS) Ncg|]B}|dddD]}t|CS)#rr)rVr)r/linenums rruz3_save..validate_qtables..sd#zz#q11!4::<<HHrc*g|]}||dzS)rr.)r/r]liness rruz3_save..validate_qtables..s&OOO5QV,OOOrrrzInvalid quantization tablec(g|]}|v|Sr.r.)r/keyrs rruz3_save..validate_qtables..s)%(3'>>GCL>>>rr$z$None or too many quantization tablesr) r str splitlinesrrr rRlistrX enumerater-r)rr ridxtablers` @rvalidate_qtablesz_save..validate_qtabless ?N gs # # P P ' 2 2 4 4POOOeAs5zz26N6NOOO  - - -2 oo1, - gtT2 3 3 '4(( (,1#g,,,?,?GU++ (w--G ((((q((((< oo% -"+G"4"4AAJC5zzR'':'nn,#' C(?(?#@#@GCLL A  - - -2 oo1, -N'  s0A&& B0BB=AF F=&F88F=extrarrr9rlzXMP data is too longsr7rvr>sr<rerpFrqoptimizer5zEXIF data is too longsmoothkeep_rgb streamtyperestart_marker_blocksrestart_marker_rowsrkr@_r$r)rrrr)RAWMODErr0r encoderinfor[r r rr rr9rgetattrro16rNr rPrExiftobytes encoderconfigrbmaxr_saver)rzrrrr rrPr+rrrpresetrrMAX_BYTES_IN_MARKERr9 overhead_lenmax_data_bytes_in_markerrbrvmarkersrrrerprr5bufsizes rrrsV""'" """427444cll!" >D 5 5TXXeV44 5 5 5Chhy"%%G((="--Khhy!!G&  G  !jj33 **^,,  % %;'oo ' ! !!+.22="EEK gs # # ;7(:(:g&**>::Gg             9  GCS// !"2&& &&&&P& 9  GCS// !"nd33w''G HHWc " "EhhuoosP #6#E s88. . .(CS// !1|#c#hh.// t#&IICOOhh}---{ #6#E  A NN;'@(@'@A B B B%&>&?&?@K A   Fq<'#f++566D "#Q%%S\\"" #   E FAAhhy"'++i"8"899G ((=%00RDHH]E4R4RKxx E**H 88FC D$ ##||~~ 4yy&&&%oo  1 U## q!!  (!,, &**  B*5;5 7f  "'!*nrwqz1GG ]]gmm"'!*nrwqz1GGgaj271:-G  % s4yy1} $G  & s5zzA~ %Gc$ii!mSZZ!^44 O B"')91gFFGs ?:?str | bytes | NoneJpegImageFile | MpoImageFilec>t||} |}|>|ddkr2|jD]\}}|dkrd|vr|cSddlm}|j||}n6#t tf$rYn#t$rtj dYnwxYw|S)NrBrrs hdrgm:Version="rzTImage appears to be a malformed MPO file, it will be interpreted as a base JPEG file) rr5rMMpoImagePluginradoptr-r\r|warningswarn)rrrzmpheadersegmentcontentrs r jpeg_factoryrVs r8 $ $B 99;;  HUOa$7$7$&J   f$$)<)G)GIII 4 4 4 4 4 4$#B11B z "          .      Is;A'A''B:BB)z.jfifz.jpez.jpgz.jpegz image/jpeg)rrrrrr)rrrr)rrrr%)rzrrr)rzrrrrrrrr)rrrrrr)3 __future__rrrSr.rrZrrrrrrr_binaryrrrrYr r r JpegPresetsr TYPE_CHECKINGtypingr r rrrr!rfrrrrrr'r5rrrrrr register_openr9 register_saveregister_extensions register_mimer.rrrsCD#"""""  !!!!!!!!!!!!!!!!!!  -,,,,,, %%%% h7h7h7h7V $ $ $ $0?0?0?0?f8@  V^S )@  V. 4@  V& ,@  V' - @   U*D 1 @   V2C 8 @  V3S 9@  V+S 1@  &@  V3S 9@  W,c 2@  W13 7@  U;T B@  W8# >@  W93 ?@   W13 7!@ " '#@ @ $ '%@ & ''@ ( ')@ * '+@ , '-@ . '/@ 0 '1@ 2 +3@ 4 )5@ 6 UOT *7@ 8 U/ 59@ : U,d 3;@ < U-t 4=@ > U5s ;?@ @ U0$ 7A@ B V,c 2C@ D V,c 2E@ @ @ F V,c 2G@ H V,c 2I@ J V,c 2K@ L V,c 2M@ N V,c 2O@ P V,c 2Q@ R V,c 2S@ T V,c 2U@ V W. 4W@ X W. 4Y@ Z W. 4[@ \ W. 4]@ ^ W. 4_@ ` W. 4a@ b )c@ d )e@ f )g@ @ h * ) ) ) ) ) ) + + + + Is #@ @ @ F....}}}}}I'}}}@---- IIII`             ' ' ' 'zzzz@37<M(,@@@M(%000-.0R0R0RSSSM(,77777r