目录
- 图片基本操作常用Api
- 图片的获取
- 图片尺寸
- 图片路径及名称
- 图片格式
- 图片剪切
- 图片复制
- 图片黏贴
- 图片大小的调整
- 图片旋转
- 图片镜像
- 图片保存
- 像素点的设置及获取
- 代码示例
1. 图片基本操作常用Api
方法 | 含义 |
---|
Image.open() | 打开指定路径的图片文件 |
image.size | 属性:图片的尺寸,是一个元祖 |
image.width | 属性:图片的宽度 |
image.height | 属性:图片的长度 |
image.filename | 属性:图片的绝对路径 |
image.format | 属性:图片的格式(png,jpg …) |
image.format_description | 属性:图片格式的具体描述 |
Image.new(‘RGBA’, (100, 200), ‘red’) | 图片的创建 |
image.crop(left, upper, right, lower) | 图片的剪切,传入一个元祖,生成一个新的图片对象 |
Image.copy() | 图片的复制,生成一个新的图片对象 |
image.paste(image_wait_paste, (left, upper)) | 图片的黏贴,在原图片进行操作,第一个参数是被黏贴的图片,第二个参数是被黏贴图片在原图片上的起始位置 |
image.resize(new_width, new_height) | 调整图片大小,参数传入的参数是一个二元的元组 |
image.rotate(angle, expand=True) | 图片旋转,默认是逆时针旋转;第二个参数如果为True,则旋转后的图片,内容区域大小不变,而图片大小发生改变,如果为False,则图片大小不变,内容区域发生改变 |
image.transpose(Image.FLIP_LEFT_RIGHT) | 图片镜像(Image.FLIP_LEFT_RIGHT, Image.FLIP_TOP_BOTTOM) |
image.save(‘path’) | 图片保存 |
image.putpixel((x, y), (210, 210, 210)) | 设置像素点的颜色值,第一个参数的坐标,第二个参数是颜色值 |
image.getpixel((x, y)) | 获取像素点的颜色值 |
2. 代码示例
'''
Author: elson
Desc: 图片处理
'''
from PIL import ImageColor, Image
import logging
logging.basicConfig(level=logging.DEBUG)
imageCat = Image.open('./imgs/zophie.png')
print(type(imageCat))
logging.debug('image size:%s' % str(imageCat.size))
logging.debug('image width:%s' % str(imageCat.width))
logging.debug('image height:%s' % str(imageCat.height))
logging.debug('image filename:%s' % str(imageCat.filename))
logging.debug('image format:%s' % str(imageCat.format))
logging.debug('image format_description:%s' % str(imageCat.format_description))
imageCat.save('./imgs/zophie.jpg')
new_image = Image.new('RGBA', (100, 200), 'purple')
new_image.save('./imgs/purple.png')
imageCrop = imageCat.crop((335, 345, 565, 560))
imageCrop.save('./imgs/crop.png')
imageCrop = Image.open('./imgs/crop.png')
new_imageCat = imageCat.copy()
new_imageCat.paste(imageCrop, (335, 100))
new_imageCat.save('./imgs/new_imageCat.png')
new_crop = imageCat.copy()
image_width, image_height = imageCat.size
crop_width, crop_height = imageCrop.size
for left in range(0, image_width, crop_width):
for top in range(0, image_height, crop_height):
print(left, top)
new_crop.paste(imageCrop, (left, top))
new_crop.save('./imgs/new_crop.png')
image_width, image_height = imageCat.size
logging.debug('原始的尺寸: image_width = %d ; image_height = %d' %(image_width, image_height))
img_resize = imageCat.resize((int(image_width/2), int(image_height/2)))
img_resize.save('./imgs/img_resize.png')
image_width, image_height = img_resize.size
logging.debug('改变后的尺寸: image_width = %d ; image_height = %d' %(image_width, image_height))
img_resize.rotate(90).save('./imgs/img_rotate.png')
img_resize.rotate(30).save('./imgs/img_rotate30.png')
img_resize.rotate(30, expand=True).save('./imgs/img_rotate30_expand.png')
img_resize.transpose(Image.FLIP_LEFT_RIGHT).save('./imgs/img_translate.png')
im = Image.new('RGBA', (100, 100))
color = im.getpixel((0, 0))
logging.debug('color(0, 0) :%s' %str(color))
for x in range(100):
for y in range(50):
im.putpixel((x, y), (210, 210, 210))
from PIL import ImageColor
for x in range(100):
for y in range(50, 100):
im.putpixel((x, y), ImageColor.getcolor('darkgray', 'RGBA'))
color = im.getpixel((0, 0))
logging.debug('color(0, 0) :%s' %str(color))
color = im.getpixel((0, 50))
logging.debug('color(0, 50) :%s' %str(color))
im.save('./imgs/putPixel.png')