[docs]defimage_line(width=800,height=600,x=0,y=0,x1=None,y1=None,x2=None,y2=None,length=1,rotate=0,size=1,color="black",background="white",blur=0,antialias=True,image=None,adjust_width=False,adjust_height=False,**kwargs):""" Creates a PIL image of a line. Parameters ---------- width : int Width of the returned image. height : int Height of the returned image. x : int x-coordinates of the center of the line, from -1 to 1. y : int y-coordinates of the center of the line, from -1 to 1. x1, x2 : int x-coordinates of the ends of the line, from -1 to 1. If not None, x is set to None. y1, y2 : int y-coordinates of the ends of the line, from -1 to 1. If not None, y is set to None. length : int Length of the line returned. rotate : float The orientation of the line in degrees, 0 being vertical and positive values rotating clockwise. Beyond 360 and below zero values wrap appropriately. size : int Width of the line returned. color : str Color of the line returned. background : str Background color. blur : int The degree of blur filter for the image returned. antialias : bool If true, resize the image using a high-quality downsampling filter. image : Image If None, an image will be created. adjust_width : bool If set to True and image is not None, the x-coordinates of the line can be adjusted to the height and width of the input image. adjust_height : bool If set to True and image is not None, the y-coordinates of the line can be adjusted to the height and width of the input image. Returns ------- Image Image of a line. Examples -------- >>> import pyllusion >>> >>> image = pyllusion.image_line(x=0, y=0, length=1) >>> image = pyllusion.image_line(image=image, x1=0, y1=0, length=0.5, rotate=90, color="green") >>> image = pyllusion.image_line(image=image, x1=0, y1=0, length=0.5, rotate=45) >>> image = pyllusion.image_line(image=image, x=0, y=0, length=1, rotate=135, color="blue") >>> image = pyllusion.image_line(image=image, length=1, rotate=20, color="red") >>> image = pyllusion.image_line(image=image, x1=0, y1=0, length=0.5, rotate=-90, size=3) >>> image = pyllusion.image_line(image=image, x1=-1, y1=-1, length=1, rotate=45, size=5, blur=0.005) >>> image """# Get imageifimageisNone:image=PIL.Image.new("RGBA",(width,height),color=background)else:image=image.convert("RGBA")width,height=image.size# UpsampleifantialiasisTrue:width,height=width*3,height*3# Create maskmask=PIL.Image.new("RGBA",(width,height))draw=PIL.ImageDraw.Draw(mask)# Get coordinatescoord,length,angle=_coord_line(mask,x=x,y=y,x1=x1,y1=y1,x2=x2,y2=y2,length=length,angle=rotate,adjust_width=adjust_width,adjust_height=adjust_height,)# Drawdraw.line(coord,fill=color,width=size)# resize with antialiasingifantialiasisTrue:mask=mask.resize(image.size,PIL.Image.ANTIALIAS)# Blur the image a bitifblur>0:mask=mask.filter(PIL.ImageFilter.GaussianBlur(blur*height))# Merge and returnimage=PIL.Image.alpha_composite(image,mask)returnimage