Python(应用) — 图片处理(一)

目录

  1. 图片基本操作常用Api
    1. 图片的获取
    2. 图片尺寸
    3. 图片路径及名称
    4. 图片格式
    5. 图片剪切
    6. 图片复制
    7. 图片黏贴
    8. 图片大小的调整
    9. 图片旋转
    10. 图片镜像
    11. 图片保存
    12. 像素点的设置及获取
  2. 代码示例

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. 代码示例

#! /usr/local/bin/python3
# -*- coding: utf-8 -*-

'''
Author: elson
Desc: 图片处理
'''

from PIL import ImageColor, Image
import logging
logging.basicConfig(level=logging.DEBUG)

# value = ImageColor.getcolor('red', 'RGBA')
# print(value)

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')

#新建一个Image对象
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')
#Image.copy()进行拷贝
new_imageCat = imageCat.copy()
#Image.paste()进行黏贴
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))
#resize() 传入的参数是一个二元的元组
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')
#expand=True 会保持图片内容区域的大小,而使整体图片变大
img_resize.rotate(30, expand=True).save('./imgs/img_rotate30_expand.png')

#镜像翻转(FLIP_LEFT_RIGHT=左右翻转,FLIP_TOP_BOTTOM=上下翻转)
img_resize.transpose(Image.FLIP_LEFT_RIGHT).save('./imgs/img_translate.png')


#更改单个像素点=> getpixel()和putpixel()
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):
        #不能直接赋值颜色,要使用ImageColor.getcolor()获取
        im.putpixel((x, y), ImageColor.getcolor('darkgray', 'RGBA'))

color = im.getpixel((0, 0))
logging.debug('color(0, 0) :%s' %str(color)) #(210, 210, 210, 255)
color = im.getpixel((0, 50))
logging.debug('color(0, 50) :%s' %str(color)) #(169, 169, 169, 255)

im.save('./imgs/putPixel.png')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值