美文网首页码农的世界python源码大全python
Python reportlab 之 draw函数介绍

Python reportlab 之 draw函数介绍

作者: iCloudEnd | 来源:发表于2019-02-23 10:40 被阅读128次

    Python reportlab 之 draw函数介绍

    本节我们讲介绍一下操作canvas时经常用的工具API。在后续教程中我将会对每个工具进行详细介绍,本文把他们都介绍给大家,方便朋友们开发之用。

    Line methods

    canvas.line(x1,y1,x2,y2)
    canvas.lines(linelist)
    

    用line和lines方法可以直接在canvas里绘制直线段

    Shape methods

    canvas.grid(xlist, ylist)
    canvas.bezier(x1, y1, x2, y2, x3, y3, x4, y4)
    canvas.arc(x1,y1,x2,y2)
    canvas.rect(x, y, width, height, stroke=1, fill=0)
    canvas.ellipse(x1,y1, x2,y2, stroke=1, fill=0)
    canvas.wedge(x1,y1, x2,y2, startAng, extent, stroke=1, fill=0)
    canvas.circle(x_cen, y_cen, r, stroke=1, fill=0)
    canvas.roundRect(x, y, width, height, radius, stroke=1, fill=0)
    

    用shape方法可以绘制复杂的形状

    String drawing methods

    canvas.drawString(x, y, text):
    canvas.drawRightString(x, y, text)
    canvas.drawCentredString(x, y, text)
    

    Text object methods

    textobject = canvas.beginText(x,y)
    canvas.drawText(textobject)
    

    我们可以通过beginText函数创建text对象,然后可以通过textobject对文本进行格式化处理。最后通过drawText完成最终的绘制工作。

    Path object methods

    path = canvas.beginPath()
    canvas.drawPath(path,stroke=1,fill=0,fillMode=None)
    canvas.clipPath(path,stroke=1,fill-0,fillMode=None)
    

    Path对象与Text对象十分相似,他们可以绘制更为复杂的图形(文字我们也归类的图形里)。

    我们还可以使用clipPath来将一个矩形的照片剪裁成圆形的头像。

    Image methods

    ReportLab需要使用 Python Imaging Library(PIL)来处理图片。
    在ReportLab里定力两种绘制图形的方法,我们建议您采用drawImage方法,因为该方法拥有缓存机制,可以提供绘制效率。另外的方法是drawInlineImage,这个方法古老,该方法通过page stream方式存在位图,如果您反复使用一张图片,该方法每次都要重新绘制,从而造成性能低下的问题。不过如果您的照片很少而且较少使用,那么drawInlineImage方法也是非常快速的。

    我们先看看古老的方法

    canvas.drawInlineImage(self,image,x,y,width=None,height=None)
    
    

    drawInlineImage可以在canvas上绘制图片。image参数既可以是PIL对象也可以是图片的地址。ReportLab接受大部分常用图片文件格式,例如GIF或JPEG。这个函数最终返回一个 tuple(组),其中包含图片width和height

    canvas.drawImage(self,image,x,y,width=None,height=None,mask=None)
    

    drawImage的参数和返回值与drawInlineImage基本一样。然后,drawImage却自带了缓存系统。当您第一次使用图片时,系统会将image引用存入序列中。如果您第二次使用时,系统会根据文件名取队列中查找,如果您用PIL对象,系统还会检测PIL的内容是否变更。

    mask参数可帮助您创建一个透明的图形。他有个6个参数可以拥有绝对RGB那个颜色被掩盖或透明。
    例如

    [0,2,40.42,136,139]
    

    他将使用1或0 来遮盖红色,40或41来覆盖绿色。

    PDF 允许许多image的属性,我们将在后续的文章里进行详细介绍

    最后如何显示

    canvas.showPage()
    

    showPage()方法将把所有内容绘制到页面中。

    相关文章

      网友评论

        本文标题:Python reportlab 之 draw函数介绍

        本文链接:https://www.haomeiwen.com/subject/gyiuyqtx.html