`

【Python真的很强大】使用PIL合成图片

PIL 
阅读更多

    目前有如下需求,想用python生成一些图文并茂的图片,然后再与另外一个图片合并(合并风格:局顶,局底,局左,局右),具体就是合并一个饼型图和其注释内容(每份扇型图的名字,所占百分比等). 

 

  原始图如下: source

 

代码部分:

 

from PIL import Image, ImageDraw, ImageFont, ImageFilter



def perform(wordPosition="bottom"):
     Img = Image.new("RGBA", pending_img_size,(255,255,255))
     Draw = ImageDraw.ImageDraw(Img, "RGBA")
     font_type="/usr/share/fonts/truetype/freefont/FreeMonoBold.ttf"
     font_size = 16
     line_words_image_space = 10
     line_space = 5
     font = ImageFont.truetype(font_type, font_size)
     Draw.setfont(font)
     allPendingElements=[{'word':u"binding (GO:0005488)", 'color':"#666666"}, 
                         {'word':u"catalytic activity (GO:0003824)", 'color':"#cc99cc"}, 
                         {'word':u"enzyme regulator activity (GO:0030234)",'color':"#33ccff"} ,
                         {'word':u"receptor activity (GO:0004872)",'color':"#009900"},
                         {'word':u"transporter activity (GO:0005215)",'color':"#99ff99"}]
     if wordPosition == 'top':
          startPoint = (0,0)
          drawPos_y = startPoint[1]
          for  element  in allPendingElements:
               Draw.rectangle((0, drawPos_y, font_size, font_size  + drawPos_y), fill = element['color'])
               Draw.text((font_size + line_words_image_space , drawPos_y ), element['word'], fill='black')
               drawPos_y  += (line_space + font_size)
               
          baseim = Image.open( "/tmp/chartProducer.jsp.png" )
          baseim.resize((pending_img_size[0], pending_img_size[1]), Image.ANTIALIAS)
          Img.paste(baseim, (0, drawPos_y) )
          Img.save('/tmp/test.png','PNG')
     elif wordPosition == 'bottom':
          startPoint = (0,pending_img_size[0] + (line_space + font_size))
          drawPos_y = startPoint[1]
          for  element  in allPendingElements:
               Draw.rectangle((0, drawPos_y, font_size, font_size  + drawPos_y), fill = element['color'])
               Draw.text((font_size + line_words_image_space , drawPos_y ), element['word'], fill='black')
               drawPos_y  += (line_space + font_size)
               
          baseim = Image.open( "/tmp/chartProducer.jsp.png" )
          baseim.resize((pending_img_size[0], pending_img_size[1]), Image.ANTIALIAS)
          Img.paste(baseim, (0, 0) )
          Img.save('/tmp/test.png','PNG')          
     return Img

if __name__ == "__main__":
     pending_img_size=(400,600)
     perform("bottom").show()

 

合成后的图片:

result

  • 大小: 11.3 KB
  • 大小: 34.2 KB
0
0
分享到:
评论

相关推荐

    PIL实现图片合成.7z

    在Python的编程环境中,PIL(Python Imaging Library)是一个强大的图像处理库,它提供了丰富的功能,包括图片合成、裁剪、旋转、颜色转换等。在本案例中,我们将重点讨论如何利用PIL来实现图片合成,特别是针对证件...

    PIL图像处理模块paste方法简单使用详解

    在Python编程语言中,PIL(Python Imaging Library)是一个强大的图像处理库,它提供了多种功能来处理各种类型的图像文件。然而,由于PIL库不再维护,社区推出了一个基于PIL的分支版本——Pillow,其提供了更为丰富...

    Python第三方图像处理库PIL

    Python第三方图像处理库PIL(Python Imaging Library)是Python编程语言中的一个强大工具,用于处理各种图像文件。它提供了一系列的函数和类,允许开发者进行图像处理、编辑、合成、色彩转换以及基本的图像分析任务...

    python使用PIL模块实现给图片打水印的方法

    ### Python使用PIL模块实现给图片打水印的方法 在图像处理领域,为图片添加水印是一种常见的需求,尤其在版权保护、品牌推广等方面发挥着重要作用。Python 的 PIL(Python Imaging Library)模块提供了丰富的图像...

    PIL库,图片库

    PIL库为Python开发者提供了一个强大的图像处理平台,无论是进行基本的图像操作还是复杂的图像分析,都能得到很好的支持。随着`Pillow`的出现,PIL的功能得到了进一步增强,使其在现代Python开发环境中仍然保持活跃。...

    python使用pil生成缩略图的方法

    总的来说,Python的PIL库提供了强大的图像处理能力,生成缩略图只是其中的一个基本应用。通过学习和掌握PIL,你可以进行更复杂的图像处理任务,如色彩转换、滤镜应用、图像合成等。对于需要处理大量图像的项目,PIL...

    python网文——PIL库

    PIL库及其分支Pillow是Python开发者处理图像的强大工具。无论是简单的图像操作还是复杂的图像处理需求,PIL都能提供高效且易用的解决方案。通过掌握本文介绍的基本操作和处理技巧,开发者可以在实际项目中灵活运用...

    Python-图片合成PPT(自定义名字版).zip

    标题中的“Python-图片合成PPT(自定义名字版)”表明这个压缩包包含一个使用Python编程语言编写的脚本,其功能是将多张图片合成为一份PPT(PowerPoint)文件,并且允许用户自定义输出的PPT文件名称。这个程序可能是...

    python画柯南代码直接用

    PIL是Python中最常用的图像处理库,可以用于打开、修改和保存许多不同格式的图片。要绘制柯南或工藤新一的图像,我们可能需要先找一张合适的图片作为参考,然后利用PIL的像素操作功能进行绘制。这通常涉及到颜色值的...

    python使用PIL和matplotlib获取图片像素点并合并解析

    Python是一种广泛使用的高级编程语言,因其简洁的语法和强大的库支持而受到许多开发者的青睐。在图像处理领域,Python提供了多种强大的库,其中PIL(Python Imaging Library,后因维护原因变为Pillow)和matplotlib...

    PythonPIL详解

    PythonPIL库,全称Python Imaging Library,是一个强大的图像处理库,用于在Python环境中进行图像操作。这个库包含了丰富的模块,提供了从简单的图像查看、编辑到复杂的图像处理算法。以下是一些主要模块的详细说明...

    python 同文件夹下图片合成一个PDF

    1. **PIL(Python Imaging Library)**:这是一个强大的图像处理库,用于读取、操作和保存各种图像文件格式。 2. **fpdf**:这是一个用于创建PDF文档的库,它提供了一系列函数和方法来添加文本、图像、表格等元素到...

    已编译的PIL模块

    PIL,全称为Python Imaging Library,是Python编程语言中用于...总之,已编译的PIL模块为Python开发者提供了一个强大且便捷的图像处理工具,无需关心底层实现,只需专注于代码编写和图像处理逻辑,大大提高了开发效率。

    python图片合成的示例

    Python中的PIL库,全称...通过这些示例,我们可以了解到Python的PIL库在图片处理方面的强大功能,以及如何利用它来实现图片的合成。无论是简单的交替合并还是按比例混合,都展示了PIL库在处理图像时的灵活性和实用性。

    Python37_Python生成水印_python_

    例如,你可以使用PIL(Python Imaging Library)或者OpenCV库来在静态图像上添加水印,而在视频上添加水印则通常需要用到像moviepy这样的专门工具。 总的来说,这个压缩包提供的资源展示了如何利用Python的VTK和...

    从 0 开始的 python 生活项目图片资源

    Python中有几个强大的库可以用来处理图像,例如PIL(Python Imaging Library)及其增强版Pillow,OpenCV,matplotlib,以及图像数据分析库imageio等。PIL是Python的标准图像处理库,支持打开、修改和保存许多不同的...

    python jpg转成PDF,可批量转

    在这个场景下,我们关注的是如何使用Python将JPEG图片转换为PDF文件,且支持批量转换。标题和描述提到的功能对于处理大量图像文件非常有用,例如整理照片存档或者统一格式以方便打印或分享。 首先,我们需要了解...

    PILwin32 For python 2.7

    PIL库在Python社区中被广泛使用,因为它的功能强大且易于集成到Python项目中。它支持多种图像文件格式,如JPEG、PNG、BMP、GIF、PPM、TIFF等。对于开发者来说,PIL提供了灵活的API,可以方便地进行像素级别的操作,...

    Python-Multiple-Image-Stitching-master.zip(Python 多图像拼接源码)

    在这个Python项目中,可能会使用到的库包括OpenCV(Computer Vision Library),这是一个强大的图像处理和计算机视觉库,提供了丰富的功能来实现上述步骤。此外,Numpy也可能用于数组操作,PIL(Python Imaging ...

Global site tag (gtag.js) - Google Analytics