美文网首页编程地带
PIL图像操作,图片缩放

PIL图像操作,图片缩放

作者: MA木易YA | 来源:发表于2018-11-30 22:19 被阅读0次

前文有讲过,常规文件缩放,几行代码即可实现

import Image

# 打开一个jpg图像文件,注意路径要改成你自己的:
im = Image.open('/Users/michael/test.jpg')
# 获得图像尺寸:
w, h = im.size
# 缩放到50%:
im.thumbnail((w//2, h//2))
# 把缩放后的图像用jpeg格式保存:
im.save('/Users/michael/thumbnail.jpg', 'jpeg')

这里将图像缩放至不大于iphone5的分辨率大小

from PIL import Image
import os

resultPath = 'result/'

# iphone 5 size
i5size = (1136, 640)

def change_size(dir_name):
    for root, dirs, files in os.walk(dir_name):
        for name in files:
            filename = os.path.join(root, name)
            print(filename)
            change_picsize(filename, name)

def change_picsize(filename, picname):
    #打开一张图片
    pic = Image.open(filename)
    w, h = pic.size
    n = w / i5size[0] if (w / i5size[0]) >= (h / i5size[1]) else h / i5size[1]
    #文件缩放
    pic.thumbnail((w / n, h / n))
    #pic.save(resultPath + picname.split('.')[0] + '_new.' + picname.split('.')[1])
    im_name, im_ext = os.path.splitext(picname)
    pic.save(resultPath + im_name + '_new' + im_ext)

if __name__ == '__main__':
    change_size('test')

在修改尺寸的时候,使用的 thumbnail() 函数,并没有使用 resize()Image.resize()Image.thumbnail() 这两个函数都是对图片进行缩放, 两者的主要区别如下:

  • resize()函数会返回一个Image对象, thumbnail()函数返回None
  • resize()修改后的图片在返回的Image中, 而原图片没有被修改; thumbnail()直接对内存中的原图进行了修改, 但是修改需要保存
  • resize()中的size参数直接设定了resize之后图片的规格, 而thumbnail()中的size参数则是设定了x/y上的最大值. 也就是说, 经过resize()处理的图片可能会被拉伸, 而经过thumbnail()处理的图片不会被拉伸
  • thumbnail()函数内部调用了resize(), 可以认为thumbnail()是对resize()的一种封装

基本调用方式如下:

from PIL import Image
# Image.resize usage
with Image.open("test.jpg") as img:
    resized = img.resize((new_x, new_y), resample=Image.LANCZOS)
    resized.save("resized.jpg", format="jpeg")

# Image.thumbnail usage
with Image.open("test.jpg") as img:
    img.thumbnail((max_x, max_y), resample=Image.LANCZOS)
    img.save("thumbnail.jpg", format="jpeg")

OS

os.walk()

os.walk() 方法为我们遍历目录树, 每次进入一个目录,它会返回一个三元组,包含相对于查找目录的相对路径,一个该目录下的目录名列表, 以及那个目录下面的文件名列表。

for root, dirs, files in os.walk(dir_name)
  • root: 相对于 dir_name 的相对路径
  • dirs: 该路径下的目录名列表,没有为空
  • files: 目录下文件名列表

os.path

对于任何的文件名的操作,都应该使用 os.path 模块,而不是使用标准字符串操作来构造自己的代码。

os.path.join(path1[, path2[, ...]])

用于将分离的各部分分组合成一个路径名

os.path.splitext

将文件名与后缀分离,用于构建新的文件名字

    s1 = os.getcwd() + "\\test.txt"
    print("初始文件路径:", s1)
    s2 = os.path.splitext(s1)
    print("文件路径分离后:", s2)
    print("*********************")
    name, span = s2
    print("文件名:"+name+'\n'+"后缀:"+span)
    new_name = name +"_new" + span
    print("构造后新的文件路径:", new_name)

    #输出
    初始文件路径: F:\ServerveManager\Git\file\show-me-the-      code\0005\test\test.txt
    文件路径分离后: ('F:\\ServerveManager\\Git\\file\\show-me-the-code\\0005\\test\\test', '.txt')
*********************
    文件名:F:\ServerveManager\Git\file\show-me-the-code\0005\test\test
    后缀:.txt
    构造后新的文件路径: F:\ServerveManager\Git\file\show-me-the-code\0005\test\test_new.txt

相关文章

  • PIL图像操作,图片缩放

    前文有讲过,常规文件缩放,几行代码即可实现 这里将图像缩放至不大于iphone5的分辨率大小 在修改尺寸的时候,使...

  • 常用的图像处理库

    (1)PIL库 PIL 是通用的python 图像处理库,可实现基本的图像缩放、裁剪、旋转和颜色转换等操作。其最重...

  • 2019-03-17

    from PIL import Image 图像的缩放读取图像im = Image.open("lenna.jpg...

  • 九、多媒体

    一、加载图片到内存 二、显示大图片 三、对图片的操作 缩放 (图像的操作步骤) 得到原图 创建拷贝 创建画板 创建...

  • PIL图像操作

    安装 Mac和其他版本的Linux可以直接使用easy_install或pip安装,安装前需要把编译环境装好: 如...

  • Python计算机视觉

    1. 基本的图像操作和处理 1.1 PIL:Python图像处理类库 获取某个目录下的所有图片文件名列表函数 这是...

  • 【高级特性】52、图像处理库(PIL)

    目录一、Pillow库二、图像处理步骤三、PIL图像操作四、小程序:PIL生成验证码 一、Pillow库 Pyth...

  • 关于MATLAB图像处理基础操作的记录

    一、图像的几何变换 1、图像的平移操作 2、图像的缩放操作 3、图像的旋转操作 4、图像的镜像操作 5、图像的错切...

  • PyTorch之torchvision.transforms

    参考:【pytorch】图像基本操作 PIL transforms.ToTensor() 注意:transform...

  • 计算机视觉(2) 图形几何变换

    图像几何变换 图片变换的本质就是对图片的矩阵进行操作 图片位移 矩阵仿射变换,是一系列变换的基础 图片缩放 图片缩...

网友评论

    本文标题:PIL图像操作,图片缩放

    本文链接:https://www.haomeiwen.com/subject/raukcqtx.html