zoukankan      html  css  js  c++  java
  • 20170511 Python练习册0000 将头像右上角加上红色的数字

    现在开始每天做一个Python小练习,第一个练习

    #!/usr/bin/env python
    #-*- coding:utf8 -*-
    from PIL import Image, ImageDraw, ImageFont
    def add_num(img):
    draw = ImageDraw.Draw(img)#创建一个可用来对img进行操作的对象,即创建绘画对象
    myfont = ImageFont.truetype('C:/windows/fonts/Arial.ttf', size=40)#加载一个TrueType的字体文件,并且创建一个字体对象
    fillcolor = "#ff0000" #填充颜色>>>红色
    width, height = img.size #获取图片的长和宽
    draw.text((width-40, 0),'99', font=myfont, fill=fillcolor)
    #drawObject.text(position,string,options)在图像内添加文字
    #Position是一个二元元组,指定字符串左上角坐标,string是要写入的字符串
    #options选项可以为fill或者font(只能选择其中之一作为第三参量,不能两个同同时存在,其中fill指定字的颜色,
    # font指定字体与字的尺寸,font必须为ImageFont中指定的font类型,具体用法见ImageFont.Truetype()
    img.save('result.jpg','jpeg')#保存图片,并改变格式
    return 0
    if __name__ == '__main__':
    image = Image.open('D:image.jpg')#打开文件
    add_num(image)#调用函数

    需要用到的知识有:转载自:http://www.cnblogs.com/denny402/p/5096001.html

    一、图片的打开与显示

    from PIL import Image
    img=Image.open('d:/dog.png')
    img.show()

    虽然使用的是Pillow,但它是由PIL fork而来,因此还是要从PIL中进行import. 使用open()函数来打开图片,使用show()函数来显示图片。

    这种图片显示方式是调用操作系统自带的图片浏览器来打开图片,有些时候这种方式不太方便,因此我们也可以使用另上一种方式,让程序来绘制图片。

    from PIL import Image
    import matplotlib.pyplot as plt
    img=Image.open('d:/dog.png')
    plt.figure("dog")
    plt.imshow(img)
    plt.show()
    这种方法虽然复杂了些,但推荐使用这种方法,它使用一个matplotlib的库来绘制图片进行显示。

    figure默认是带axis的,如果没有需要,我们可以关掉

    plt.axis('off')

    打开图片后,可以使用一些属性来查看图片信息,如

    print img.size  #图片的尺寸
    print img.mode  #图片的模式
    print img.format  #图片的格式

    显示结果为:

    (558, 450)
    RGBA
    PNG

    二、图片的保存

    img.save('d:/dog.jpg')

    就一行代码,非常简单。这行代码不仅能保存图片,还是转换格式,如本例中,就由原来的png图片保存为了jpg图片。

    转载自:http://www.2cto.com/kf/201603/491448.html

    一、ImageFont模块的函数

    1、 Load

    定义:ImageFont.load(file)? Font instance

    含义:从指定的文件中加载一种字体,该函数返回对应的字体对象。如果该函数失败,将产生IOError异常。

    2、 Load_path

    定义:ImageFont.load_path(file)? Font instance

    含义:和函数load()一样,但是如果没有指定当前路径的话,会从sys.path开始查找指定的字体文件。

    3、 Truetype

    定义1:ImageFont.truetype(file,size) ? Font instance

    含义1:加载一个TrueType或者OpenType字体文件,并且创建一个字体对象。这个函数从指定的文件加载了一个字体对象,并且为指定大小的字体创建了字体对象。

    在windows系统中,如果指定的文件不存在,加载器会顺便看看windows的字体目录下是否存在。

    这个函数需要_imagingft服务。

    定义2:ImageFont.truetype(file,size, encoding=value) ? Font instance

    含义2:(New in 1.1.5)加载一个TrueType或者OpenType字体文件,并且使用指定的编码方式创建一个字体对象。通常的编码方式有“unic”(Unicode),“symb”(Microsoft Symbol),“ADOB”(Adobe Standard),“ADBE”(Adobe Expert)和“armn”(Apple Roman)。

    下面的例子使用MicrosoftSymbol字体,即变量encoding为“symb”,在oxF000和0xF0FF之间绘制一个字符。

    1
    2
    font = ImageFont.truetype("symbol.ttf", 16, encoding="symb")
    draw.text((0, 0), unichr(0xF000 + 0xAA))

    4、 Load_default

    定义:ImageFont.load_default()? Font instance

    含义:(New in 1.1.4)加载一个默认的字体。

    二、ImageFont模块的方法

    Font对象必须实现下面的方法,供ImageDraw层使用。

    1、 Getsize

    定义:font.getsize(text)? (width, height)

    含义:返回给定文本的宽度和高度,返回值为2元组。

    2、 Getmask

    定义:font.getmask(text,mode=”“) ? Image object

    含义:为给定的文本返回一个位图。这个位图是PIL内部存储内存的实例(为Image.core接口模块定义)。

    如果字体使用了抗锯齿,位图的模式为“L”,且其最大值为255。否则,它的模式为“1”。

    (New in 1.1.5)可选参数mode用于一些显卡驱动指定自己喜欢的模式;如果为空,渲染器可能会返回任意模式。注意:该模式总是一个字符串。

    三、ImageFont模块的实例

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    >>> from PIL import Image, ImageDraw, ImageFont
    >>> im02 = Image.open("D:\Code\Python\test\img\test02.jpg")
    >>> draw = ImageDraw.Draw(im02)
    >>> ft = ImageFont.truetype("C:\WINDOWS\Fonts\SIMYOU.TTF", 20)
    >>> draw.text((30,30), u"Python图像处理库PIL从入门到精通",font = ft, fill = 'red')
    >>> ft = ImageFont.truetype("C:\WINDOWS\Fonts\SIMYOU.TTF", 40)
    >>> draw.text((30,100), u"Python图像处理库PIL从入门到精通",font = ft, fill = 'green')
    >>> ft = ImageFont.truetype("C:\WINDOWS\Fonts\SIMYOU.TTF", 60)
    >>> draw.text((30,200), u"Python图像处理库PIL从入门到精通",font = ft, fill = 'blue')
    >>> ft = ImageFont.truetype("C:\WINDOWS\Fonts\SIMLI.TTF", 40)
    >>> draw.text((30,300), u"Python图像处理库PIL从入门到精通",font = ft, fill = 'red')
    >>> ft = ImageFont.truetype("C:\WINDOWS\Fonts\STXINGKA.TTF", 40)
    >>> draw.text((30,400), u"Python图像处理库PIL从入门到精通",font = ft, fill = 'yellow')
    >>> im02.show()

    在windows系统下,字体文件位于C:WindowsFonts文件夹下。本实例中用到的SIMYOU.TTF为幼圆字体文件,SIMLI.TTF为隶书字体文件,STXINGKA.TTF为行楷字体文件。用户可以根据自己的需要,从Fonts文件夹下选择所需字体文件。

    字体的大小,可以根据定义字体时的第二个参数来设定。

    本实例中图像im02如下图所示:

     

  • 相关阅读:
    为什么你投十份简历,只有一两家公司约你?又或者为什么你每投一份简历都能获得面试机会?
    JAVA程序1,1,2,3,5,8,13,21....第30个是什么...?
    1-2+3-4+5-6+7......+n的几种实现
    分层应用——如何实现登录?
    初识三层
    VB.NET视频总结——后续篇
    操作系统小结
    VB.NET视频总结——基础篇
    台湾与大陆的计算机术语翻译差异
    VB.NET概述
  • 原文地址:https://www.cnblogs.com/Jiang190/p/6843125.html
Copyright © 2011-2022 走看看