- 打开图片
打开一张图片是一个很快的操作,和图片的尺寸以及压缩方式无关,打开的时候只读取文件header来获取文件格式、模式、尺寸等信息
from PIL import Image
im = Image.open("hopper.ppm")
with open("hopper.ppm", "rb") as fp:
im = Image.open(fp)
import io
im = Image.open(io.BytesIO(buffer))
from PIL import Image
from urllib.request import urlopen
url = "https://python-pillow.org/images/pillow-logo.png"
img = Image.open(urlopen(url))
>>> im.format
PPM
>>> im.size
(512,512)
>>> im.mode
RGB
>>> im.show()
>>> im.save("hopper.jpg")
- 裁切图片
裁切需要使用到一个四元组(left,up,right,bottom),图片的左上坐标是(0,0)
box = (100, 100, 400, 400)
region = im.crop(box)
- 将一张图片粘贴到另一张图片上
此时被粘贴的图片需要大小和box吻合
region = region.transpose(Image.Transpose.ROTATE_180)
im.paste(region, box)
r, g, b = im.split()
im = Image.merge("RGB", (b, g, r))
out = im.resize((128, 128))
out = im.rotate(45)
out = im.transpose(Image.Transpose.FLIP_LEFT_RIGHT)
out = im.transpose(Image.Transpose.FLIP_TOP_BOTTOM)
out = im.transpose(Image.Transpose.ROTATE_90)
out = im.transpose(Image.Transpose.ROTATE_180)
out = im.transpose(Image.Transpose.ROTATE_270)
from PIL import Image
with Image.open("hopper.ppm") as im:
im = im.convert("L")
from PIL import ImageFilter
out = im.filter(ImageFilter.DETAIL)
from PIL import ImageEnhance
enh = ImageEnhance.Contrast(im)
enh.enhance(1.3).show("30% more contrast")
out = im.point(lambda i: i * 1.2)
source = im.split()
R, G, B = 0, 1, 2
mask = source[R].point(lambda i: i < 100 and 255)
out = source[G].point(lambda i: i * 0.7)
source[G].paste(out, None, mask)
im = Image.merge(im.mode, source)
from PIL import Image
with Image.open("animation.gif") as im:
im.seek(1)
try:
while 1:
im.seek(im.tell() + 1)
except EOFError:
pass
from PIL import ImageSequence
for frame in ImageSequence.Iterator(im):
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧