Warning: session_start(): Session cannot be started after headers have already been sent in /home/tvrreohg/public_html/manga.php on line 13
3 ia’(ã@sºddlZddlZddlZddlmZmZGdd„dƒZdd„Zdd „Zd d „Z Gd d „d ejƒZ dd„Z dd„Z ej e je e ƒeje je ƒeje jddddddgƒeje jdƒdS)éNé)ÚImageÚ ImageFilec@sJeZdZdZddd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dS)Ú BoxReaderz} A small helper class to read fields stored in JPEG2000 header boxes and to easily step into and read sub-boxes. rcCs ||_|dk|_||_d|_dS)Nrréÿÿÿÿ)ÚfpÚ has_lengthÚlengthÚremaining_in_box)Úselfrr ©r ú6/tmp/tmp5hum_rxs/lib64/python/PIL/Jpeg2KImagePlugin.pyÚ__init__s zBoxReader.__init__cCs:|jr|jjƒ||jkrdS|jdkr2||jkSdSdS)NFrT)rrÚtellr r )r Ú num_bytesr r r Ú _can_read#s   zBoxReader._can_readcCs`|j|ƒstdƒ‚|jj|ƒ}t|ƒ|krDtd|›dt|ƒ›d�ƒ‚|jdkr\|j|8_|S)NzNot enough data in headerzExpected to read z bytes but only got Ú.r)rÚ SyntaxErrorrÚreadÚlenÚOSErrorr )r rÚdatar r r Ú _read_bytes-s    zBoxReader._read_bytescCs tj|ƒ}|j|ƒ}tj||ƒS)N)ÚstructÚcalcsizerÚunpack)r Z field_formatÚsizerr r r Ú read_fields;s  zBoxReader.read_fieldscCs |j}|j|ƒ}ttj|ƒ|ƒS)N)r rrÚioÚBytesIO)r rrr r r Ú read_boxes@s zBoxReader.read_boxescCs$|jr|jjƒ|j|jkSdSdS)NT)rrrr r )r r r r Ú has_next_boxEszBoxReader.has_next_boxcCs~|jdkr|jj|jtjƒd|_|jdƒ\}}|dkrL|jdƒd}d}nd}||ksh|j||ƒ rptdƒ‚|||_|S) Nrrz>I4sz>QéézInvalid header lengthr)r rÚseekÚosÚSEEK_CURrrr)r ZlboxÚtboxZhlenr r r Ú next_box_typeKs  zBoxReader.next_box_typeNr)r) Ú__name__Ú __module__Ú __qualname__Ú__doc__rrrrr r!r(r r r r rs  rc Cs|jdƒ}tjd|ƒd}||j|dƒ}tjd|ƒ\ }}}}}}} } } } } dg| } dg| } dg| } x8t| ƒD],}tjd|dd|ƒ\| |<| |<| |<qvW||||f}| d krÚ| dd @d krÔd }nd }n0| dkrèd}n"| dkröd}n| dk�rd}nd}||fS)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>Hrz >HHIIIIIIIIHNz>BBBé$érér#zI;16ÚLÚLAÚRGBéÚRGBA)rrrÚ unpack_fromÚrange)rÚhdrZlsizZsizZrsizZxsizZysizZxosizZyosizÚ_ZcsizZssizZxrsizZyrsizÚirÚmoder r r Ú_parse_codestream`s.    , r<cCs$|dkr d|d|d|SdS)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.réþé i'Nr )ÚnumZdenomÚexpr r r Ú _res_to_dpi‚srAcCs¢t|ƒ}d}d}xF|jƒrV|jƒ}|dkr6|jƒ}Pq|dkr|jdƒddkrd}qWd}d}d}d}d} �x |jƒ�rx|jƒ}|dkrö|jd ƒ\} } }}| | f}|d kr¾|d @d kr¾d }n6|d krÌd}n(|dkrÚd}n|dkrèd}n |dkrôd}qp|dkrp|jƒ} xn| jƒ�rt| jƒ} | dk�r| jdƒ\}}}}}}t|||ƒ}t|||ƒ}|dk �rn|dk �rn||f} P�qWqpW|dk�sŽ|dk�r–tdƒ‚|||| 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>IIHBrr0r#zI;16r1r-r2r/r3r4r5sres srescz>HHHHBBzMalformed JP2 header)rr!r(r rrAr)rÚreaderÚheaderZmimetyper'rr;ZbpcZncÚdpiÚheightÚwidthÚresZtresZvrcnZvrcdZhrcnZhrcdZvrceZhrceZhresZvresr r r Ú_parse_jp2_headerŠsZ      rHcsFeZdZdZdZdd„Ze‡fdd„ƒZejdd„ƒZdd „Z ‡Z S) ÚJpeg2KImageFileZJPEG2000zJPEG 2000 (ISO 15444)cCsd|jjdƒ}|dkr.d|_t|jƒ\|_|_nV||jjdƒ}|dkr|d|_t|jƒ}|\|_|_|_}|dk r„||jd<nt dƒ‚|j dks˜|jdkr t d ƒ‚d |_ d |_ d }d}y|jj ƒ}tj|ƒj}Wnjtk �r8d}y4|jjƒ}|jjd tjƒ|jjƒ}|jj|ƒWntk �r2d}YnXYnXd d|j d |j|j |j ||ffg|_dS)Nr4sÿOÿQÚj2kr#s jP ‡ Újp2rDznot a JPEG 2000 filezunable to determine size/moderrÚjpeg2krrrr)rr)rrÚcodecr<Ú_sizer;rHZcustom_mimetypeÚinforrÚ_reduceÚlayersÚfilenor%ÚfstatÚst_sizeÚ Exceptionrr$rÚSEEK_ENDÚtile)r ÚsigrCrDÚfdr Úposr r r Ú_openÍsD      zJpeg2KImageFile._opencs|jp tƒjS)N)rPÚsuperÚreduce)r )Ú __class__r r r]ýszJpeg2KImageFile.reducecCs ||_dS)N)rP)r Úvaluer r r r]scCsª|jrž|jržd|j>}|d?}t|jd||ƒt|jd||ƒf|_|jd}|dd|j|j|dd|ddf}|dd|j|d|fg|_tjj|ƒS)Nrrr/r4r-)rr)rWrPÚintrrNrQrÚload)r ÚpowerZadjustÚtÚt3r r r ras   *zJpeg2KImageFile.load) r)r*r+ÚformatZformat_descriptionr[Úpropertyr]ÚsetterraÚ __classcell__r r )r^r rIÉs 0rIcCs |dd…dkp|dd…dkS)Nr4sÿOÿQé s jP ‡ r )Úprefixr r r Ú_acceptsrkcCsH|jdƒrd}nd}|j}|jddƒ}|jddƒ}|jddƒ}|jddƒ}|jd dƒ} | dk rˆt| ttfƒo|td d „| Dƒƒ rˆtd ƒ‚|jd dƒ} |jddƒ} |jddƒ} |jddƒ} |jddƒ}|jddƒ}d}t|dƒ�ry |j ƒ}Wnt k �rd}YnX||||| | | | | |||f |_ t j ||dd|jd|fgƒdS)Nz.j2krJrKÚoffsetÚ tile_offsetÚ tile_sizeÚ quality_modeZratesÚquality_layerscSsg|]}t|ttfƒ‘qSr )Ú isinstancer`Úfloat)Ú.0Z quality_layerr r r ú 6sz_save..z,quality_layers must be a sequence of numbersÚnum_resolutionsrZcodeblock_sizeÚ precinct_sizeÚ irreversibleFÚ progressionZLRCPÚ cinema_modeÚnorrRrLrr)rr)ÚendswithZ encoderinfoÚgetrqÚlistÚtupleÚallÚ ValueErrorÚhasattrrRrUZ encoderconfigrÚ_saver)ZimrÚfilenameÚkindrOrlrmrnrorpruZ cblk_sizervrwrxryrYr r r r‚$sP                r‚z.jp2z.j2kz.jpcz.jpfz.jpxz.j2cz image/jp2)rr%rÚrrrr<rArHrIrkr‚Z register_openreZ register_saveZregister_extensionsZ register_mimer r r r ÚsI"?P =