博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 调整图像大小_使用Python调整图像大小
阅读量:2523 次
发布时间:2019-05-11

本文共 1692 字,大约阅读时间需要 5 分钟。

python 调整图像大小

我喜欢 ,并且已经学习了一段时间。 前段时间,我编写了一个Python脚本,需要调整一堆图像的大小,同时保持长宽比(比例)不变。 因此,我环顾四周,发现了 。

您需要安装PIL才能使代码正常工作。 请注意,尽管也可以使用称为的“友好叉”,但似乎不再维护PIL。 要在基于的系统上安装PIL,请以root用户身份在终端中运行以下命令:

aptitude install python-imaging

现在是用于在保持宽高比的同时调整图像大小的Python代码。

import PIL     
from PIL import Image
basewidth      
=
300

img
= Image.
open
( ‘fullsized_image.
jpg
') 
wpercent = (basewidth / float(img.size[0])) 
hsize = int((float(img.size[1]) * float(wpercent))) 
img = img.resize((basewidth, hsize), PIL.Image.ANTIALIAS) 
img.save(‘resized_image.jpg'
)

这几行Python代码将使用PIL将图像( fullsized_image.jpg )调整为300像素的宽度,该宽度设置为变量basewidth和与新宽度成比例的高度。 通过确定原始宽度(img.size [0])的300个像素的百分比,然后将原始高度(img.size [1])乘以该百分比,可以计算出比例高度。 结果高度值保存在变量hsize中。

如果您需要不同的图像宽度,则可以将基本宽度更改为任何其他数字。 另外,请注意,我将调整大小后的图像保存为另一个名称resized_image.jpg ,因为我也想保留完整大小的图像( fullsized_image.jpg )。 当然,您不必这样做。 如果需要,可以使用相同的文件名用调整大小后的图像覆盖完整尺寸的图像。

注意:如果在Zope中将此脚本用作外部方法,则需要PIL import Image中的行以避免名称空间与Zope的Image冲突。

如果高度是固定的,宽度是成比例变化的,则几乎是同一件事,您只需要稍微改变一下即可:

baseheight      
=
560
img
= Image.
open
( ‘fullsized_image.
jpg
') hpercent = (baseheight / float(img.size[1])) wsize = int((float(img.size[0]) * float(hpercent))) img = img.resize((wsize, baseheight), PIL.Image.ANTIALIAS) img.save(‘resized_image.jpg'
)

注意, basewidth现在是baseheight ,因为height是固定的。 在第三行中,我们正在计算高度百分比,因此我们需要img.size [1]而不是img.size [0] 。 size属性是一个元组,包含以像素为单位的宽度和高度。 size [0]表示第一个元组元素,它是宽度,而size [1]是第二个元素,它是高度。 第4行还具有在size [0](宽度)和size [1](高度)之间切换的功能。

最初在Dayo Ntwari的发布,并经许可在知识共享(Creative Commons)下重新发布。

翻译自:

python 调整图像大小

转载地址:http://qjdzd.baihongyu.com/

你可能感兴趣的文章
阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第1节 常用函数接口_16_常用的函数式接口_Function接口中的方法Apply...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第2节 Stream流式思想概述_1_使用传统的方式,遍历集合,对集合进行过滤...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第2节 Stream流式思想概述_2_使用Stream流的方式,遍历集合...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第2节 Stream流式思想概述_3_流式思想概述...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第1节 常用函数接口_16_常用的函数式接口_Function接口中练习-自定义函数模型拼接...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第3节 两种获取Stream流的方式_2_Stream流中的常用方法_forEach...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第3节 两种获取Stream流的方式_1_两种获取Stream流的方式...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第3节 两种获取Stream流的方式_4_Stream流的特点_只能使用一次...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第3节 两种获取Stream流的方式_5_Stream流中的常用方法_map...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第3节 两种获取Stream流的方式_6_Stream流中的常用方法_count...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第3节 两种获取Stream流的方式_7_Stream流中的常用方法_limit...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第3节 两种获取Stream流的方式_8_Stream流中的常用方法_skip...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第3节 两种获取Stream流的方式_3_Stream流中的常用方法_filter...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第3节 两种获取Stream流的方式_10_练习:集合元素处理(传统方式)...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第3节 两种获取Stream流的方式_9_Stream流中的常用方法_concat...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第3节 两种获取Stream流的方式_11_练习:集合元素处理(Stream方式)...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第4节 方法引用_1_方法引用基本介绍...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第4节 方法引用_2_方法引用_通过对象名引用成员方法...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第4节 方法引用_5_方法引用_通过this引用本类的成员...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第4节 方法引用_7方法引用_数组的构造器引用...
查看>>