o
    j$                     @   s  d dl Z d dlmZ d dlmZ d dlZd dlZd dlm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZmZmZmZmZmZmZ d d	lmZ d
dlmZ d
dlmZ ddlmZmZm Z m!Z!m"Z" ddl#m$Z$m%Z%m&Z& dZ'ej(dddd Z)dd Z*dd Z+dd Z,ej-.dddgdd Z/dd  Z0d!d" Z1d#d$ Z2d%d& Z3d'd( Z4d)d* Z5d+d, Z6d-d. Z7d/d0 Z8G d1d2 d2Z9d3d4 Z:d5d6 Z;d7d8 Z<d9d: Z=d;d< Z>d=d> Z?d?d@ Z@dAdB ZAdCdD ZBdS )E    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)Zautousec                   c   s    t d dV  t  dS )z-Ensure that PIL plugin is used in tests here.pilN)r   r    r   r   Z/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/skimage/io/tests/test_pil.pyuse_pil_plugin   s   
r   c                  C   sF   t  } | d d dksJ | d d dksJ | d d dks!J d S )Nr   r   r   r   Zimread_collection)r   )orderr   r   r   test_prefered_plugin'   s   r!   c                  C   sz   t dd} | j}W d    n1 sw   Y  td}t|| tt|}t| t	t
|| dk s;J d S )N.pngsuffixr   gMbP?)r   namenpeyer   r   r   osremovesumabs)ffnameIZIpr   r   r   test_png_round_trip.   s   


 r/   c                  C   s^   t tddd} | jdksJ | jtjksJ t tddd} t| jjtjd v s-J d S )Ndata/color.pngT)Zas_grayr   zdata/camera.pngZ
AllInteger)r   r   ndimdtyper&   float64char	typecodesimgr   r   r   test_imread_as_gray9   s
    r8   explicit_kwargsFc                 C   s|   t jddd}tdd}|j}W d    n1 sw   Y  | r#n	 t|| t|}t| |j	dks<J |j	d S )Nr         z.tifr#   )r:   r;   r   )
r&   randomrandr   r%   r   r   r(   r)   shape)r9   xr,   r-   r7   r   r   r   test_imread_separate_channelsB   s   

r@   c                  C   s$   t td} | jdksJ | jd S )Nzdata/multipage_rgb.tif)r   
   rA   r   )r   r   r>   r6   r   r   r   test_imread_multipage_rgb_tifX   s   rB   c                  C   s8   t td} | jdksJ t td} | jdksJ d S )Ndata/palette_gray.pngr   data/palette_color.pngr   )r   r   r1   r6   r   r   r   test_imread_palette]   s   rE   c               	   C   s   t jg dg dg dg dg dgg dg dg dg dg dgg dg dg dg dg dggt jd} ttd}t||  d S )N)   r      rG   )   rH   rG   r   )r   r   rG   r   )r      rG   rG   r2   zdata/foo3x5x4indexed.png)r&   arrayuint8r   r   r
   )Zdfoor7   r   r   r    test_imread_index_png_with_alphad   s0   rM   c                  C   s8   t td} t| sJ t td}t|rJ d S )NrC   rD   )r   openr   r   )graycolorr   r   r   test_palette_is_gray   s   rQ   c                  C   s2   t d} d| d d d< ttd}t||  d S )NrA   rA   rG   r   zdata/checker_bilevel.png)r&   zerosr   r   r
   expectedr7   r   r   r   test_bilevel   s   
rV   c                  C   s<   t td} ttd}t |jt jsJ t||  d S )Ndata/chessboard_GRAY_U8.npyzdata/chessboard_GRAY_U16.tif)r&   loadr   r   
issubdtyper2   uint16r	   rT   r   r   r   test_imread_uint16   s   r[   c                   C   s<   t t ttd W d    d S 1 sw   Y  d S )Nzdata/truncated.jpg)r   raisesIOErrorr   r   r   r   r   r   test_imread_truncated_jpg   s   "r^   c                  C   sz   t td} tdd'}t|| dd t|}t| ||  |   d}|dks+J W d    d S 1 s6w   Y  d S )NrW   .jpgr#   _   )ZqualityZ
data_rangeGz?)	r&   rX   r   r   r   r   r   maxmin)Z
chessboardZjpgZimsimr   r   r   test_jpg_quality_arg   s   "rf   c                  C   s>   t td} ttddd}|jjt jksJ t||  d S )NrW   zdata/chessboard_GRAY_U16B.tifr   )plugin)r&   rX   r   r   r2   typerZ   r	   rT   r   r   r   test_imread_uint16_big_endian   s   ri   c                   @   s>   e Zd Zdd Zdd ZdddZdd	 Zd
d Zdd ZdS )TestSavec                 C   sD   t dd}t|| t|}|W  d    S 1 sw   Y  d S )Nr"   r#   )r   r   r   )selfr?   r-   yr   r   r   roundtrip_file   s
   
$zTestSave.roundtrip_filec                 C   s   t |}t|}|S N)r   r   )rk   r?   	pil_imagerl   r   r   r   roundtrip_pil_image   s   zTestSave.roundtrip_pil_image   c                 C   s   t || tj| d S rn   )r	   astyper&   Zint32)rk   r2   r?   rl   Zscalingr   r   r   verify_roundtrip   s   zTestSave.verify_roundtripc                 c   s    dD ]@}t jt jt jt jfD ]3}t j||dt jj|  }t |t j	r1| j
||||dfV  q|d |}| j
||||fV  qqd S )N)rR   )rA   rA   r   )rA   rA      rJ   rG   )r&   rL   rZ   Zfloat32r3   Zonesr<   r=   rY   Zfloatingrs   rr   )rk   Zroundtrip_functionr>   r2   r?   r   r   r   verify_imsave_roundtrip   s   z TestSave.verify_imsave_roundtripc                 C      |  | j d S rn   )ru   rm   rk   r   r   r   test_imsave_roundtrip_file      z#TestSave.test_imsave_roundtrip_filec                 C   rv   rn   )ru   rp   rw   r   r   r   test_imsave_roundtrip_pil_image   ry   z(TestSave.test_imsave_roundtrip_pil_imageN)rq   )	__name__
__module____qualname__rm   rp   rs   ru   rx   rz   r   r   r   r   rj      s    
rj   c               
   C   sv  t dd} tt' t| d g t| td W d    n1 s&w   Y  W d    n1 s5w   Y  tt' t| d g t| td W d    n1 sZw   Y  W d    n1 siw   Y  tt& tg  t| tddd W d    n1 sw   Y  W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S )Nr"   r#   z is a low contrast image)r   r   r   rq   )r   r   r   F)Zcheck_contrast)r   r   r\   
ValueErrorr   r   r&   rS   )r-   r   r   r   test_imsave_incorrect_dimension   s,   
"r   c                  C   st   d} t | }t }tdg t|| W d    n1 sw   Y  |d t|}t|j|  t	|| d S )Nr   r   zis a low contrast imager   )
r&   rS   r   r   r   seekr   r   r>   r   r>   imagesoutr   r   r   test_imsave_filelike   s   

r   c                  C   s   d} t j| dti}t }tdg t|| W d    n1 s"w   Y  |d t|}t|j	|  t
|t| d S )Nr   r2   z6is a boolean image: setting True to 255 and False to 0r   )r&   r'   boolr   r   r   r   r   r   r>   r   rr   r   r   r   r   test_imsave_boolean_input   s   
r   c                  C   s.   d} t | }t|}t|}t|j|  d S )Nr   )r&   rS   r   r   r   r>   )r>   r   ro   r   r   r   r   test_imexport_imimport  s
   
r   c                   C   sp   t dtg td W d    n1 sw   Y  t dtg tdd W d    d S 1 s1w   Y  d S )N.* is a boolean imager   Zbmp)r   plugin_deprecation_warningr   r   r   r   r   test_all_color	  s   
"r   c                   C   s:   t dtg td W d    d S 1 sw   Y  d S )Nr   r   )r   r   r   r   r   r   r   test_all_mono  s   
"r   c                  C   sP   t td} | jdksJ | jt tddd}|jdksJ t| d | d S )Nzdata/no_time_for_that_tiny.gif)         r      )Zimg_num)r   r   r   )r   r   r>   r   )r7   Zimg2r   r   r   test_multi_page_gif  s
   r   c                  C   s  t td} ttd}|d}tdd}|j}W d    n1 s%w   Y  || z|  W n	 t	y>   Y nw t |}t
| }t
|}tdD ]1}t|d d d d |f }t|d d d d |f }	t|	||	 |	  d}
|
dksJ qOd S )Nr0   ZCMYKr_   r#   r   ra   rb   )r   r   r   rN   convertr   r%   savecloseAttributeErrorr   ranger&   Zascontiguousarrayr   rc   rd   )refr7   r,   r-   newZref_labZnew_labiZnewiZrefire   r   r   r   	test_cmyk  s*   

r   c                  C   s   t td} t| jd d S )Nzdata/green_palette.pngr   )r   r   r   r1   r6   r   r   r   test_extreme_palette8  s   r   )Cr(   ior   tempfiler   numpyr&   ZpytestZPILr   Zskimage._sharedr   Zskimage._shared._tempfiler   Zskimage._shared._warningsr   Zskimage._shared.testingr   r	   r
   r   r   r   r   Zskimage.metricsr    r   rP   r   r   r   r   r   r   Z_plugins.pil_pluginr   r   r   r   Zfixturer   r!   r/   r8   markZparametrizer@   rB   rE   rM   rQ   rV   r[   r^   rf   ri   rj   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   sT    $	

	
!!