Python 3.7基于PIL 数字图像处理.基础操作

1.读取与存储操作

PIL 的 open() 函数用于创建 PIL 图像对象,比如读取一张图片:
from PIL import Image//调用PIL库
读取图片
1. img = Image.open(‘photo’test.jpg’)
注意:在该路径下必须有phototest图片,否则会出错,这个路径一般默认为你所创建工程的文件。
存储图片
save() 方法用于保存图像到具有指定文件名的文件。通过 save() 方法,PIL 可以将图像保存成多种格式的文件,PIL 是个足够智能的类库,可以根据文件扩展名来判定图像的格式。比如:img.save(‘photo’test.jpg’, ‘JPEG’),PIL 函数会进行简单的检查,如果文件不是 JPEG 格式,会自动将其转换成 JPEG 格式;如果转换失败,它会在控制台输出一条报告失败的消息。

为了效果,生成缩略图并且保存为photo’test_thumb.jpg:
# coding=utf-8
from PIL import Image
# 读取图片
img = Image.open(‘photo’test.jpg’)
# 生成缩略图
img.thumbnail((128, 128))
# 保存图片
img.save(‘photo’test.jpg’, ‘JPEG’)
运行后,进去文件目录:

图像的一些基本操作

  1. 输出图片的信息(格式、尺寸以及图像类型)
  2. # coding=utf-8
  3. from PIL import Image

    1. # 读取图片
  4. img = Image.open(‘qq_image.jpg’)

    1. # 输出图片的格式,尺寸以及图像类型
  5. print img.format, img.size, img.mode
    输出:JPEG (355, 346) RGB

  6. 显示图片

  7. # coding=utf-8
  8. from PIL import Image

    1. # 读取图片
  9. img = Image.open(‘qq_image.jpg’)

    1. # 显示图片
  10. img.show()
    在PyCharm下运行呢,会直接调用Windows照片查看器来显示图片

  11. 生成缩略图
    thumbnail() 方法接受一个元组参数(该参数指定生成缩略图的大小),然后将图像转换成符合元组参数指定大小的缩略图。

  12. coding=utf-8

  13. from PIL import Image

    1. # 读取图片
  14. img = Image.open(‘qq_image.jpg’)

    1. # 生成缩略图
  15. img.thumbnail((128, 128))

    1. # 显示图片
  16. img.show()
    这样运行之后就会显示128*128的图片

  17. 旋转图片
    要旋转一幅图像,可以使用逆时针方式表示旋转角度,然后调用 rotate() 方法:

  18. # coding=utf-8
  19. from PIL import Image

    1. # 读取图片
  20. img = Image.open(‘qq_image.jpg’)

    1. # 逆时针旋转45度
  21. rorate1 = img.rotate(45)
  22. rorate1.show()

    1. # 逆时针旋转90
  23. rorate2 = img.transpose(Image.ROTATE_90)
  24. rorate2.show()
    运行后如图:
    rorate1:

由于尺寸不变,旋转45度之后会填白

rorate2:

注意:只有选择90度,180度以及270度的时候才能用img.transpose(Image.ROTATE_90),其他角度用rotate

  1. 翻转
  2. # coding=utf-8
  3. from PIL import Image

    1. # 读取图片
  4. img = Image.open(‘qq_image.jpg’)

    1. # 左右对换
  5. rorate3 = img.transpose(Image.FLIP_LEFT_RIGHT)
  6. rorate3.show()

    1. # 上下翻转
  7. rorate4 = img.transpose(Image.FLIP_TOP_BOTTOM)
  8. rorate4.show()
    运行后:
    rorate3:

rorate4:

  1. 缩放图片
    要调整一幅图像的尺寸,我们可以调用 resize() 方法。该方法的参数是一个元组,用来指定新图像的大小:
  2. # coding=utf-8
  3. from PIL import Image

    1. # 读取图片
  4. img = Image.open(‘qq_image.jpg’)

    1. # 缩放图片为50*50
  5. resize1 = img.resize((50, 50))
  6. resize1.show()

  7. 图片灰度化
    图像的颜色转换可以使用 convert() 方法来实现。要读取一幅图像,并将其转换成灰度图像,只需要加上 convert(‘L’),如下:

  8. # coding=utf-8
  9. from PIL import Image

    1. # 读取图片
  10. img = Image.open(‘qq_image.jpg’)

    1. # 图片转换为灰度
  11. grey = img.convert(‘L’)
  12. grey.show()
    运行后:

  13. 某个像素点的色彩值的获取以及更改

  14. # coding=utf-8
  15. from PIL import Image

    1. # 读取图片
  16. img = Image.open(‘qq_image.jpg’)

    1. # 获取某个像素位置的值
  17. print img.getpixel((100, 100))

    1. # 更改某个像素位置的值
  18. img.putpixel((100, 100), (0, 0, 0))

  19. 裁剪图片
    使用 crop() 方法可以从一幅图像中裁剪指定区域:

  20. # coding=utf-8
  21. from PIL import Image

    1. # 读取图片
  22. img = Image.open(‘qq_image.jpg’)

    1. # 裁剪图片 box为裁剪图片的区域范围
  23. box = (100, 100, 250, 250)
  24. region = img.crop(box)
  25. region.show()
    运行输出:

    注意:Python规定左上角为(0, 0)的坐标点,box由一个4元组(左,上,右,下)定义,表示为坐标为: (left, upper, right, lower),最后的两个数字必须比前面两个要大。如图:

  26. 粘贴图片
    为了效果,裁剪该图片的一部分然后旋转,最后粘贴到指定区域:

  27. # coding=utf-8
  28. from PIL import Image

    1. # 读取图片
  29. img = Image.open(‘qq_image.jpg’)

    1. # 裁剪图片 box为裁剪图片的区域范围
  30. box = (100, 100, 250, 250)
  31. region = img.crop(box)
  32. region.show()

    1. # 逆时针旋转图片180度
  33. region2 = region.transpose(Image.ROTATE_180)
  34. region2.show()

    1. # 图片的粘贴
  35. img.paste(region2, box)
  36. img.show()
发布了1 篇原创文章 · 获赞 0 · 访问量 936
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览