code: def make_image(imagesize, voxval=0, spacing=None, origin=None, direction=None, has_components=False, pixeltype='float'):
      
      if isinstance(imagesize, iio.ANTsImage):
          img = imagesize.clone()
          sel = imagesize > 0
          if voxval.ndim > 1:
                  voxval = voxval.flatten()
          if (len(voxval) == int((sel>0).sum())) or (len(voxval) == 0):
              img[sel] = voxval
          else:
              raise ValueError('Num given voxels %i not same as num positive values %i in `imagesize`' % (len(voxval), int((sel>0).sum())))
          return img
      else:
          if isinstance(voxval, (tuple,list,np.ndarray)):
              array = np.asarray(voxval).astype('float32').reshape(imagesize)
          else:
              array = np.full(imagesize,voxval,dtype='float32')
          image = from_numpy(array, origin=origin, spacing=spacing,
                              direction=direction, has_components=has_components)
          return image.clone(pixeltype)
docs: Make an image with given size and voxel value or given a mask and vector
  
      ANTsR function: `makeImage`
  
      Arguments
      ---------
      shape : tuple/ANTsImage
          input image size or mask
  
      voxval : scalar
          input image value or vector, size of mask
  
      spacing : tuple/list
          image spatial resolution
  
      origin  : tuple/list
          image spatial origin
  
      direction : list/ndarray
          direction matrix to convert from index to physical space
  
      components : boolean
          whether there are components per pixel or not
  
      pixeltype : float
          data type of image values
  
      Returns
      -------
      ANTsImage