U
    rh                  	   @  s   d dl mZ d dlZd dlZd dlZd dlmZ d dlm	Z	m
Z
 ddddddd	ZdddddddddddZG dd deZdS )    )annotationsN)Base)_image_decoder_dataexpectintz
np.ndarray)widthheightsquare_sizereturnc                 C  s   t j|| dft jd}| | }|| }t jjdd||dft jd}t|D ]P}t|D ]B}|| }	|| }
|||f }|||
|
| |	|	| d d f< qVqJ|S )N   dtyper      )sizer   )npzerosuint8randomrandintrange)r   r   r	   imageZnum_squares_xZnum_squares_ycolorsijxycolor r   M/tmp/pip-unpacked-wheel-xnis5xre/onnx/backend/test/case/node/image_decoder.pygenerate_checkerboard   s        &r   RGB       strz$_image_decoder_data.ImageDecoderDataztuple[np.ndarray, np.ndarray])format_frozen_datapixel_formatr   r   tile_szr
   c              	   C  sH  zdd l }W n  tk
r,   |j|jf Y S X tjd t|||}|j	|}t
 ,}	|j|	| d |	 }
tj|
tjd}W 5 Q R X |dkr|jt
|
}t|d d d d d d df }nv|dkr|jt
|
}t|}nP|dkr2|jt
|
d	}t|d d d d tjf }ntd
| ||fS )Nr   i90  )formatr   BGRr    	GrayscaleLzUnsupported pixel format: )Z	PIL.ImageImportErrordataoutputr   r   seedr   ZImageZ	fromarrayioBytesIOsavegetvalueZ
frombufferr   openarrayconvertZnewaxis
ValueError)r$   r%   r&   r   r   r'   ZPILr   Z	image_pilfr.   Z
data_arrayZ
output_pilr/   r   r   r   _generate_test_data,   s,    
$
 r:   c                   @  s   e Zd ZeddddZeddddZeddddZeddd	d
ZeddddZeddddZ	eddddZ
eddddZeddddZdS )ImageDecoderNone)r
   c                  C  sB   t jjddgdgdd} tdtjd\}}t| |g|gdd d S )	Nr;   r.   r/   r    inputsoutputsr&   jpegZ"test_image_decoder_decode_jpeg_rgbr>   r?   name)onnxhelper	make_noder:   r   Zimage_decoder_decode_jpeg_rgbr   noder.   r/   r   r   r   $export_image_decoder_decode_jpeg_rgbP   s"      z1ImageDecoder.export_image_decoder_decode_jpeg_rgbc                  C  sB   t jjddgdgdd} tdtjd\}}t| |g|gdd d S )	Nr;   r.   r/   r+   r=   r@   Z(test_image_decoder_decode_jpeg_grayscalerA   )rC   rD   rE   r:   r   Z#image_decoder_decode_jpeg_grayscaler   rF   r   r   r   *export_image_decoder_decode_jpeg_grayscalec   s"      z7ImageDecoder.export_image_decoder_decode_jpeg_grayscalec                  C  sB   t jjddgdgdd} tdtjd\}}t| |g|gdd d S )	Nr;   r.   r/   r)   r=   r@   Z"test_image_decoder_decode_jpeg_bgrrA   )rC   rD   rE   r:   r   Zimage_decoder_decode_jpeg_bgrr   rF   r   r   r   $export_image_decoder_decode_jpeg_bgrv   s"      z1ImageDecoder.export_image_decoder_decode_jpeg_bgrc                  C  sB   t jjddgdgdd} tdtjd\}}t| |g|gdd d S )	Nr;   r.   r/   r    r=   Zjpeg2000Z$test_image_decoder_decode_jpeg2k_rgbrA   )rC   rD   rE   r:   r   Zimage_decoder_decode_jpeg2k_rgbr   rF   r   r   r   &export_image_decoder_decode_jpeg2k_rgb   s"      z3ImageDecoder.export_image_decoder_decode_jpeg2k_rgbc                  C  sB   t jjddgdgdd} tdtjd\}}t| |g|gdd d S )	Nr;   r.   r/   r    r=   ZbmpZ!test_image_decoder_decode_bmp_rgbrA   )rC   rD   rE   r:   r   Zimage_decoder_decode_bmp_rgbr   rF   r   r   r   #export_image_decoder_decode_bmp_rgb   s"      z0ImageDecoder.export_image_decoder_decode_bmp_rgbc                  C  sB   t jjddgdgdd} tdtjd\}}t| |g|gdd d S )	Nr;   r.   r/   r    r=   ZpngZ!test_image_decoder_decode_png_rgbrA   )rC   rD   rE   r:   r   Zimage_decoder_decode_png_rgbr   rF   r   r   r   #export_image_decoder_decode_png_rgb   s"      z0ImageDecoder.export_image_decoder_decode_png_rgbc                  C  sB   t jjddgdgdd} tdtjd\}}t| |g|gdd d S )	Nr;   r.   r/   r    r=   ZtiffZ"test_image_decoder_decode_tiff_rgbrA   )rC   rD   rE   r:   r   Zimage_decoder_decode_tiff_rgbr   rF   r   r   r   $export_image_decoder_decode_tiff_rgb   s"      z1ImageDecoder.export_image_decoder_decode_tiff_rgbc                  C  sB   t jjddgdgdd} tdtjd\}}t| |g|gdd d S )	Nr;   r.   r/   r    r=   ZwebpZ"test_image_decoder_decode_webp_rgbrA   )rC   rD   rE   r:   r   Zimage_decoder_decode_webp_rgbr   rF   r   r   r   $export_image_decoder_decode_webp_rgb   s"      z1ImageDecoder.export_image_decoder_decode_webp_rgbc                  C  sB   t jjddgdgdd} tdtjd\}}t| |g|gdd d S )	Nr;   r.   r/   r    r=   ppmZ!test_image_decoder_decode_pnm_rgbrA   )rC   rD   rE   r:   r   Zimage_decoder_decode_pnm_rgbr   rF   r   r   r   #export_image_decoder_decode_pnm_rgb   s"      z0ImageDecoder.export_image_decoder_decode_pnm_rgbN)__name__
__module____qualname__staticmethodrH   rI   rJ   rK   rL   rM   rN   rO   rQ   r   r   r   r   r;   O   s$   r;   )r    r!   r!   r"   )
__future__r   r1   Znumpyr   rC   Zonnx.backend.test.case.baser   Zonnx.backend.test.case.noder   r   r   r:   r;   r   r   r   r   <module>   s        #