
    9i$                        S SK r S SKJr  S SKJr  S SKrS SKrS SKJ	r	  S SK
Jr  S SKJr  S SKJr  S SKJrJrJrJrJrJrJr  S S	KJr  S
SKJr  S
SKJr  SSKJrJrJ r J!r!J"r"  SSK#J$r$J%r%J&r&  Sr'\RP                  " SS9S 5       r)S r*S r+S r,\RZ                  R]                  SSS/5      S 5       r/S r0S r1S r2S r3S r4S r5S  r6S! r7S" r8 " S# S$5      r9S% r:S& r;S' r<S( r=S) r>S* r?S+ r@S, rAS- rBg).    N)BytesIO)NamedTemporaryFile)Image)testing)temporary_file)expected_warnings)assert_allcloseassert_array_almost_equalassert_array_equalassert_equalcolor_checkfetch
mono_check)structural_similarity   )img_as_float)rgb2lab   )imreadimsavereset_plugins
use_pluginplugin_order)_palette_is_grayscalendarray_to_pilpil_to_ndarrayz1use `imageio` or other I/O packages directly|\A\ZT)autousec               #   >   #    [        S5        Sv   [        5         g7f)z-Ensure that PIL plugin is used in tests here.pilN)r   r        Y/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/skimage/io/tests/test_pil.pyuse_pil_pluginr#      s      u	Os   c                  l    [        5       n U S   S   S:X  d   eU S   S   S:X  d   eU S   S   S:X  d   eg )Nr   r   r   r   imread_collection)r   )orders    r"   test_prefered_pluginr'   '   sP    NE?1&&&?1&&&$%a(E111r!   c                  ^   [        SS9 n U R                  nS S S 5        [        R                  " S5      n[	        WU5        [        [        U5      5      n[        R                  " U5        [        R                  " [        R                  " X2-
  5      5      S:  d   eg ! , (       d  f       N= f)N.pngsuffixr   gMbP?)r   namenpeyer   r   r   osremovesumabs)ffnameIIps       r"   test_png_round_tripr7   .   sw    	6	*a 
+ 	q	A
5!	fUm	$BIIe66"&&.!D((( 
+	*s   B
B,c                  6   [        [        S5      SS9n U R                  S:X  d   eU R                  [        R
                  :X  d   e[        [        S5      SS9n [        R                  " U R                  5      R                  [        R                  S   ;   d   eg )Ndata/color.pngT)as_grayr   zdata/camera.png
AllInteger)r   r   ndimdtyper-   float64char	typecodesimgs    r"   test_imread_as_grayrC   9   sv    
'($
7C88q==99

"""
()4
8C88CII##r||L'AAAAr!   explicit_kwargsFc                 R   [         R                  R                  SSS5      n[        SS9 nUR                  nS S S 5        U (       a  O [        WU5        [        U5      n[        R                  " U5        UR                  S:X  d   UR                  5       eg ! , (       d  f       Nf= f)Nr         z.tifr*   )rF   rG   r   )
r-   randomrandr   r,   r   r   r/   r0   shape)rD   xr3   r4   rB   s        r"   test_imread_separate_channelsrL   B   s     			q"a A	6	*a 
+ 
5!
-CIIe99
"-CII-" 
+	*s   B
B&c                  n    [        [        S5      5      n U R                  S:X  d   U R                  5       eg )Nzdata/multipage_rgb.tif)r   
   rN   r   )r   r   rJ   rA   s    r"   test_imread_multipage_rgb_tifrO   X   s-    
/0
1C99&1		1&r!   c                      [        [        S5      5      n U R                  S:X  d   e[        [        S5      5      n U R                  S:X  d   eg )Ndata/palette_gray.pngr   data/palette_color.pngr   )r   r   r<   rA   s    r"   test_imread_paletterS   ]   sB    
./
0C88q==
/0
1C88q==r!   c            
          [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ// SQ/ SQ/ SQ/ SQ/ SQ// SQ/ SQ/ SQ/ SQ/ SQ//[         R                  S9n [        [	        S5      5      n[        X5        g )N)   r      rV   )   rW   rV   r   )r   r   rV   r   )r      rV   rV   r=   zdata/foo3x5x4indexed.png)r-   arrayuint8r   r   r   )dfoorB   s     r"    test_imread_index_png_with_alphar]   d   s|     88 #"""" #" "!!!!	
. hh1D4 12
3Cs!r!   c                      [         R                  " [        S5      5      n [        U 5      (       d   e[         R                  " [        S5      5      n[        U5      (       a   eg )NrQ   rR   )r   openr   r   )graycolors     r"   test_palette_is_grayrb      sO    ::e345D &&&&JJu567E$U+++++r!   c                  ~    [         R                  " S5      n SU S S S2'   [        [        S5      5      n[	        X5        g )NrN   rN   rV   r   zdata/checker_bilevel.png)r-   zerosr   r   r   expectedrB   s     r"   test_bilevelrh      s5    xx!HHSqSM
12
3Cs%r!   c                      [         R                  " [        S5      5      n [        [        S5      5      n[         R                  " UR
                  [         R                  5      (       d   e[        X5        g )Ndata/chessboard_GRAY_U8.npyzdata/chessboard_GRAY_U16.tif)r-   loadr   r   
issubdtyper=   uint16r
   rf   s     r"   test_imread_uint16rn      sM    wwu:;<H
56
7C==BII....c,r!   c                      [         R                  " [        5         [        [	        S5      5        S S S 5        g ! , (       d  f       g = f)Nzdata/truncated.jpg)r   raisesIOErrorr   r   r    r!   r"   test_imread_truncated_jpgrr      s(    		 u)*+ 
!	 	 s	   9
Ac                     [         R                  " [        S5      5      n [        SS9 n[	        XSS9  [        U5      n[        XU R                  5       U R                  5       -
  S9nUS:  d   e S S S 5        g ! , (       d  f       g = f)Nrj   .jpgr*   _   )quality
data_rangeGz?)	r-   rk   r   r   r   r   r   maxmin)
chessboardjpgimsims       r"   test_jpg_quality_argr      so    <=>J	v	&#s+C[#z~~'7*..:J'J
 Tzz 
'	&	&s   AA::
Bc                      [         R                  " [        S5      5      n [        [        S5      SS9nUR                  R
                  [         R                  :X  d   e[        X5        g )Nrj   zdata/chessboard_GRAY_U16B.tifr   )plugin)r-   rk   r   r   r=   typerm   r
   rf   s     r"   test_imread_uint16_big_endianr      sJ    wwu:;<H
67
FC99>>RYY&&&c,r!   c                   <    \ rS rSrS rS rS
S jrS rS rS r	Sr
g	)TestSave   c                 z    [        SS9 n[        X!5        [        U5      nUsS S S 5        $ ! , (       d  f       g = f)Nr)   r*   )r   r   r   )selfrK   r4   ys       r"   roundtrip_fileTestSave.roundtrip_file   s,    6*e5uA +**s   ,
:c                 2    [        U5      n[        U5      nU$ N)r   r   )r   rK   	pil_imager   s       r"   roundtrip_pil_imageTestSave.roundtrip_pil_image   s    "1%	9%r!   c                 Z    [        X$-  R                  [        R                  5      U5        g r   )r
   astyper-   int32)r   r=   rK   r   scalings        r"   verify_roundtripTestSave.verify_roundtrip   s    !1;"6"6rxx"@!Dr!   c              #     #    S H  n[         R                  [         R                  [         R                  [         R                  4 H  n[         R
                  " X#S9[         R                  R                  " U6 -  n[         R                  " U[         R                  5      (       a  U R                  X4U" U5      S4v   My  US-  R                  U5      nU R                  X4U" U5      4v   M     M     g 7f)N)rd   )rN   rN   r   )rN   rN      rY   rV   )r-   r[   rm   float32r>   onesrH   rI   rl   floatingr   r   )r   roundtrip_functionrJ   r=   rK   s        r"   verify_imsave_roundtrip TestSave.verify_imsave_roundtrip   s     9E((BIIrzz2::FGGE/"))..%2HH==4400%<Nq<QSVWWS((/A00%<Nq<QRR G :s   C1C3c                 :    U R                  U R                  5        g r   )r   r   r   s    r"   test_imsave_roundtrip_file#TestSave.test_imsave_roundtrip_file   s    $$T%8%89r!   c                 :    U R                  U R                  5        g r   )r   r   r   s    r"   test_imsave_roundtrip_pil_image(TestSave.test_imsave_roundtrip_pil_image   s    $$T%=%=>r!   r    N)   )__name__
__module____qualname____firstlineno__r   r   r   r   r   r   __static_attributes__r    r!   r"   r   r      s"    
E	S:?r!   r   c            	      .   [        SS9 n [        R                  " [        5         [	        U S-   /5         [        U [        R                  " S5      5        S S S 5        S S S 5        [        R                  " [        5         [	        U S-   /5         [        U [        R                  " S5      5        S S S 5        S S S 5        [        R                  " [        5         [	        / 5         [        U [        R                  " S5      SS9  S S S 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nc= f! , (       d  f       Nl= f! , (       d  f       g = f)Nr)   r*   z is a low contrast image)r   r   r   r   )r   r   r   F)check_contrast)r   r   rp   
ValueErrorr   r   r-   re   )r4   s    r"   test_imsave_incorrect_dimensionr      s    	v	&%^^J'"E,F$F#GHubhh|45 I ( ^^J'"E,F$F#GHubhhy12 I ( ^^J'"2&ubhhy1%H ' ( 
'	&HH (' IH ('
 '& (' 
'	&s   FD1!D D1"F E!E1E9"FE5' E$E5F 
D.*D11
D?	;F
EE
E!	F$
E2.E55
F	?F
Fc                  $   Sn [         R                  " U 5      n[        5       n[        S/5         [	        X!5        S S S 5        UR                  S5        [        U5      n[        UR                  U 5        [        X15        g ! , (       d  f       NL= f)Nr   r   zis a low contrast imager   )
r-   re   r   r   r   seekr   r   rJ   r	   rJ   imagesouts       r"   test_imsave_fileliker      sk    EHHUOE	A 
56	7q 
8 FF1I
)CE"C 
8	7s   B
Bc                  T   Sn [         R                  " U S[        06n[        5       n[	        S/5         [        X!5        S S S 5        UR                  S5        [        U5      n[        UR                  U 5        [        UR                  [        5      U5        g ! , (       d  f       N`= f)Nr   r=   z6is a boolean image: setting True to 255 and False to 0r   )r-   r.   boolr   r   r   r   r   r   rJ   r	   r   r   s       r"   test_imsave_boolean_inputr      s~    EFFE&&E	A 
TU	Vq 
W FF1I
)CE"CJJt$e, 
W	Vs   B
B'c                      Sn [         R                  " U 5      n[        U5      n[        U5      n[	        UR
                  U 5        g )Nr   )r-   re   r   r   r   rJ   )rJ   r   r   r   s       r"   test_imexport_imimportr     s6    EHHUOEu%I

#CE"r!   c                      [        S[        /5         [        S5        S S S 5        [        S[        /5         [        SS5        S S S 5        g ! , (       d  f       N5= f! , (       d  f       g = f)N.* is a boolean imager   bmp)r   plugin_deprecation_warningr   r    r!   r"   test_all_colorr   	  sR    	35OP	QE 
R	35OP	QE5! 
R	Q 
R	Q	Q	Qs   AA
A
A,c                  p    [        S[        /5         [        S5        S S S 5        g ! , (       d  f       g = f)Nr   r   )r   r   r   r    r!   r"   test_all_monor     s&    	35OP	Q5 
R	Q	Qs   '
5c                      [        [        S5      5      n U R                  S:X  d   U R                  5       e[        [        S5      SS9nUR                  S:X  d   e[        U S   U5        g )Nzdata/no_time_for_that_tiny.gif)         r      )img_num)r   r   r   )r   r   rJ   r	   )rB   img2s     r"   test_multi_page_gifr     s_    
78
9C99'22'%891ED::$$$CFD!r!   c                     [        [        S5      5      n [        R                  " [        S5      5      nUR	                  S5      n[        SS9 nUR                  nS S S 5        UR                  W5         UR                  5         [        U5      n[        U 5      n[        U5      n[        S5       Ht  n[        R                  " US S 2S S 2U4   5      n[        R                  " US S 2S S 2U4   5      n	[        XU	R                  5       U	R!                  5       -
  S9n
U
S:  a  Mt   e   g ! , (       d  f       N= f! [         a     Nf = f)Nr9   CMYKrt   r*   r   rw   ry   )r   r   r   r_   convertr   r,   savecloseAttributeErrorr   ranger-   ascontiguousarrayr   rz   r{   )refrB   r3   r4   newref_labnew_labinewirefir   s              r"   	test_cmykr     s   
'(
)C
**U+,
-C
++f
C	6	*a 
+ HHUO		 -CclGclG1X##GAq!G$45##GAq!G$45#D488:
;RSTzz	  
+	*  s   D*5D; *
D8;
EEc                  X    [        [        S5      5      n [        U R                  S5        g )Nzdata/green_palette.pngr   )r   r   r   r<   rA   s    r"   test_extreme_paletter   8  s     
/0
1C1r!   )Cr/   ior   tempfiler   numpyr-   pytestPILr   skimage._sharedr   skimage._shared._tempfiler   skimage._shared._warningsr   skimage._shared.testingr	   r
   r   r   r   r   r   skimage.metricsr    r   ra   r   r   r   r   r   r   _plugins.pil_pluginr   r   r   r   fixturer#   r'   r7   rC   markparametrizerL   rO   rS   r]   rb   rh   rn   rr   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   <module>r      s   	  '    # 4 7   2   F F W W R   2)B *UDM:. ;.*2
"B,&-,
-? ?BI  - #"
"6r!   