o
    soi                     @  sr   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Z				ddddZG dd deZdS )    )annotationsN)Base)_image_decoder_dataexpectwidthintheightsquare_sizereturn
np.ndarrayc                 C  s   t j|| dft jd}| | }|| }t jjdd||dft jd}t|D ](}t|D ]!}|| }	|| }
|||f }|||
|
| |	|	| d d f< q+q%|S )N   dtyper      )sizer   )npzerosuint8randomrandintrange)r   r   r	   imagenum_squares_xnum_squares_ycolorsijxycolor r    ]/home/ubuntu/.local/lib/python3.10/site-packages/onnx/backend/test/case/node/image_decoder.pygenerate_checkerboard   s   $r"   RGB       format_strfrozen_data$_image_decoder_data.ImageDecoderDatapixel_formattile_sztuple[np.ndarray, np.ndarray]c                 C  sb  zdd l }W n ty   |j|jf Y S w tjd t|||}|j	|}t
 }	|j|	| d |	 }
tj|
tjd}W d    n1 sJw   Y  |dkrq|jt
|
}t|d d d d d d df }||fS |dkr|jt
|
}t|}||fS |dkr|jt
|
d	}t|d d d d tjf }||fS td
| )Nr   i90  )formatr   BGRr#   	GrayscaleLzUnsupported pixel format: )	PIL.ImageImportErrordataoutputr   r   seedr"   Image	fromarrayioBytesIOsavegetvalue
frombufferr   openarrayconvertnewaxis
ValueError)r&   r(   r*   r   r   r+   PILr   	image_pilfr4   
data_array
output_pilr5   r    r    r!   _generate_test_data,   s4   
"	
rH   c                   @  s   e Zd ZedddZedddZedddZedd	d
ZedddZedddZ	edddZ
edddZedddZdS )ImageDecoderr
   Nonec                  C  B   t jjddgdgdd} tdtjd\}}t| |g|gdd d S )	NrI   r4   r5   r#   inputsoutputsr*   jpeg"test_image_decoder_decode_jpeg_rgbrM   rN   name)onnxhelper	make_noderH   r   image_decoder_decode_jpeg_rgbr   noder4   r5   r    r    r!   $export_image_decoder_decode_jpeg_rgbP      
z1ImageDecoder.export_image_decoder_decode_jpeg_rgbc                  C  rK   )	NrI   r4   r5   r0   rL   rO   (test_image_decoder_decode_jpeg_grayscalerQ   )rS   rT   rU   rH   r   #image_decoder_decode_jpeg_grayscaler   rW   r    r    r!   *export_image_decoder_decode_jpeg_grayscalec   rZ   z7ImageDecoder.export_image_decoder_decode_jpeg_grayscalec                  C  rK   )	NrI   r4   r5   r.   rL   rO   "test_image_decoder_decode_jpeg_bgrrQ   )rS   rT   rU   rH   r   image_decoder_decode_jpeg_bgrr   rW   r    r    r!   $export_image_decoder_decode_jpeg_bgrv   rZ   z1ImageDecoder.export_image_decoder_decode_jpeg_bgrc                  C  rK   )	NrI   r4   r5   r#   rL   jpeg2000$test_image_decoder_decode_jpeg2k_rgbrQ   )rS   rT   rU   rH   r   image_decoder_decode_jpeg2k_rgbr   rW   r    r    r!   &export_image_decoder_decode_jpeg2k_rgb   rZ   z3ImageDecoder.export_image_decoder_decode_jpeg2k_rgbc                  C  rK   )	NrI   r4   r5   r#   rL   bmp!test_image_decoder_decode_bmp_rgbrQ   )rS   rT   rU   rH   r   image_decoder_decode_bmp_rgbr   rW   r    r    r!   #export_image_decoder_decode_bmp_rgb   rZ   z0ImageDecoder.export_image_decoder_decode_bmp_rgbc                  C  rK   )	NrI   r4   r5   r#   rL   png!test_image_decoder_decode_png_rgbrQ   )rS   rT   rU   rH   r   image_decoder_decode_png_rgbr   rW   r    r    r!   #export_image_decoder_decode_png_rgb   rZ   z0ImageDecoder.export_image_decoder_decode_png_rgbc                  C  rK   )	NrI   r4   r5   r#   rL   tiff"test_image_decoder_decode_tiff_rgbrQ   )rS   rT   rU   rH   r   image_decoder_decode_tiff_rgbr   rW   r    r    r!   $export_image_decoder_decode_tiff_rgb   rZ   z1ImageDecoder.export_image_decoder_decode_tiff_rgbc                  C  rK   )	NrI   r4   r5   r#   rL   webp"test_image_decoder_decode_webp_rgbrQ   )rS   rT   rU   rH   r   image_decoder_decode_webp_rgbr   rW   r    r    r!   $export_image_decoder_decode_webp_rgb   rZ   z1ImageDecoder.export_image_decoder_decode_webp_rgbc                  C  rK   )	NrI   r4   r5   r#   rL   ppm!test_image_decoder_decode_pnm_rgbrQ   )rS   rT   rU   rH   r   image_decoder_decode_pnm_rgbr   rW   r    r    r!   #export_image_decoder_decode_pnm_rgb   rZ   z0ImageDecoder.export_image_decoder_decode_pnm_rgbN)r
   rJ   )__name__
__module____qualname__staticmethodrY   r]   r`   rd   rh   rl   rp   rt   rx   r    r    r    r!   rI   O   s&    rI   )r   r   r   r   r	   r   r
   r   )r#   r$   r$   r%   )r&   r'   r(   r)   r*   r'   r   r   r   r   r+   r   r
   r,   )
__future__r   r9   numpyr   rS   onnx.backend.test.case.baser   onnx.backend.test.case.noder   r   r"   rH   rI   r    r    r    r!   <module>   s   
 #