跳转到主要内容

一个小型Python包,可以轻松调整图像大小

项目描述

python-resize-image v1.1.20 on PyPi MIT license Stable

一个Python包,可以轻松调整图像大小

此包提供用于轻松调整图像大小的函数。

依赖关系

  • Pillow 2.7++

  • Python 2.7/3.4

简介

以下函数受支持

  • resize_crop 使用指定大小的居中矩形裁剪图像。

  • resize_cover 将图像调整到指定区域大小,如有需要则裁剪(与background-size: cover行为相同)。

  • resize_contain 将图像调整到可以适应指定区域的大小,保持比例而不裁剪(与background-size: contain行为相同)。

  • resize_height 将图像调整到指定高度,同时调整宽度以保持相同的比例。

  • resize_width 将图像调整到指定宽度,同时调整高度以保持相同的比例。

  • resize_thumbnail 在保持比例的同时调整图像大小,尽可能匹配指定的大小。

安装

使用pip安装python-resize-image

pip install python-resize-image

用法

python-resize-image接受第一个参数为PIL.Image,然后是size参数,该参数可以是一个整数或两个整数的元组。

在以下示例中,我们打开一个图像,裁剪它并另存为新文件

from PIL import Image

from resizeimage import resizeimage


with open('test-image.jpeg', 'r+b') as f:
    with Image.open(f) as image:
        cover = resizeimage.resize_cover(image, [200, 100])
        cover.save('test-image-cover.jpeg', image.format)

在调整大小之前,python-image-resize 将检查操作是否可以完成。如果不需要增加任何一个维度,则认为调整大小是有效的。为了避免测试,请将 validate=False 作为参数添加。

cover = resizeimage.resize_cover(image, [200, 100], validate=False)

您还可以使用附加到调整大小函数的 validate 函数创建两步验证然后处理的过程,以测试调整大小的可行性,而不进行验证。在每个调整大小函数上使用点 . 运算符即可使用 validate,例如 resize_cover.validate

以下示例代码重写了第一个示例,以使用此功能。

from PIL import Image

from resizeimage import resizeimage

with open('test-image.jpeg', 'r+b')
    with Image.open() as image:
        is_valid = resizeimage.resize_cover.validate(image, [200, 100])

# do something else...

if is_valid:
    with Image.open('test-image.jpeg') as image:
        resizeimage.resize_cover.validate(image, [200, 100], validate=False)
        cover = resizeimage.resize_cover(image, [200, 100])
        cover.save('test-image-cover.jpeg', image.format)

请注意,无需对图像进行两次验证,因此我们将 validate=False 传递给 resize_cover.validate

API 参考

resize_crop(image, size, validate=True)

使用指定大小的中心矩形裁剪图像。

裁剪一个 200x200 的中心正方形图像。

from PIL import Image
from resizeimage import resizeimage

fd_img = open('test-image.jpeg', 'r')
img = Image.open(fd_img)
img = resizeimage.resize_crop(img, [200, 200])
img.save('test-image-crop.jpeg', img.format)
fd_img.close()

resize_cover(image, size, validate=True, resample=Image.LANCZOS)

调整图像大小以填充指定的区域,根据需要裁剪。这与 CSS background-size: cover 属性具有相同的行为。

调整并裁剪(从中心)图像,使其覆盖 200x100 的矩形。

from PIL import Image
from resizeimage import resizeimage

fd_img = open('test-image.jpeg', 'r')
img = Image.open(fd_img)
img = resizeimage.resize_cover(img, [200, 100])
img.save('test-image-cover.jpeg', img.format)
fd_img.close()

resize_contain(image, size, validate=True, resample=Image.LANCZOS, bg_color=(255, 255, 255, 0))

调整图像大小,使其可以适应指定的区域,保持比例,不进行裁剪。这与 CSS background-size: contain 属性具有相同的行为。创建一个白色背景边框。

将图像调整到最小尺寸,使其在一个 200x100 的矩形内,同时保持源图像和目标图像之间的比例。

from PIL import Image
from resizeimage import resizeimage

fd_img = open('test-image.jpeg', 'r')
img = Image.open(fd_img)
img = resizeimage.resize_contain(img, [200, 100])
img.save('test-image-contain.jpeg', img.format)
fd_img.close()

resize_width(image, width, validate=True, resample=Image.LANCZOS)

调整图像大小到指定的宽度,同时调整高度以保持相同的比例。

将图像调整到 200 像素宽度。

from PIL import Image
from resizeimage import resizeimage

fd_img = open('test-image.jpeg', 'r')
img = Image.open(fd_img)
img = resizeimage.resize_width(img, 200)
img.save('test-image-width.jpeg', img.format)
fd_img.close()

resize_height(image, height, validate=True, resample=Image.LANCZOS)

调整图像大小到指定的宽度,同时调整高度以保持相同的比例。

将图像调整到 200 像素高度。

from PIL import Image
from resizeimage import resizeimage

fd_img = open('test-image.jpeg', 'r')
img = Image.open(fd_img)
img = resizeimage.resize_height(img, 200)
img.save('test-image-height.jpeg', img.format)
fd_img.close()

resize_thumbnail(image, size, validate=True, resample=Image.LANCZOS)

调整图像大小,同时保持比例,尽可能匹配指定的尺寸。

将图像调整到可以包含在 200 像素正方形内的尺寸。

from PIL import Image
from resizeimage import resizeimage

fd_img = open('test-image.jpeg', 'r')
img = Image.open(fd_img)
img = resizeimage.resize_thumbnail(img, [200, 200])
img.save('test-image-thumbnail.jpeg', img.format)
fd_img.close()

resize(method, *args, **kwargs)

使用指定的方法调整图像大小:'crop'、'cover'、'contain'、'width'、'height' 或 'thumbnail'。

from PIL import Image
from resizeimage import resizeimage

fd_img = open('test-image.jpeg', 'r')
img = Image.open(fd_img)
img = resizeimage.resize('thumbnail', img, [200, 200])
img.save('test-image-thumbnail.jpeg', img.format)
fd_img.close()

测试

pip install -r requirements.dev.txt
pip install -e .
python setup.py test

贡献

python-resize-image 存放在 github.com/VingtCinq/python-resize-image/

在编码之前,请使用以下命令将 pre-commit 作为 git 钩子安装

cp pre-commit .git/hooks/

然后安装钩子和 pylint

pip install git-pylint-commit-hook pylint

如果您想强制提交(您需要有充分的理由这样做),请使用带有 -n 选项的 commit,例如 git commit -n

支持

如果您遇到问题,请告诉我们。

许可证

该项目采用 MIT 许可证。

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源码分发

python-resize-image-1.1.20.tar.gz (6.9 kB 查看哈希值)

上传时间 源码

构建分发

python_resize_image-1.1.20-py2.py3-none-any.whl (8.4 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下支持