PIL图形库很多有用的函数,做网站用的比较多的要数剪切图片了,平时都是用thumbnail函数来完成,它能满足我的大部分需求,但也有时并不是我们需要的,比如一张1024*768像素的大图,你想剪切成为300*300像素的小图,这时你用thumbnail剪切出来的小图宽度是300像素了,但小图的高度也跟着等比例缩小,变成了225像素。
有没有相关的函数,可以满足我们的需求呢?有,那就是transform函数,transform函数可以传入剪切图片的尺寸size(宽高),一个方法method(EXTENT)和剪切区域data的起始点和结束点,返回的是image。完整的定义如:
im.transform(size, method, data) => image
有了这个函数,我们就可以考虑我们刚才的需求了。关键很是剪切的区域。
思路大致为:
选择剪切区域之前,我们就考虑,一个长方形的图片,剪切成正方形,肯定要舍些东西,把多余的部分去掉。既然图片宽度比高度大,我们就把图片左右两边剪切点,剩下来的这就是我们的选择区域了。接下来就开始求多余的部分的数值了。
首先先比较图片的 宽度和高度,比如图片是img,img.size我们就得到它的宽w和高h了。
w=img.size[0] h=img.size[1],img宽度比高度多出了w-h个像素。那么方案自然就出来了,从大图的左边开始,垂直剪切(w-h)/2个像素,再从右开始垂直剪切(w-h)/2个像素便得出一个768像素的正方形小图来了。再用thumbnail剪切成需要的尺寸300,OK完成了。
代码如下:
import Image
from Image import EXTENT
if img.size[0]>img.size[1]:
offset=int(img.size[0]-img.size[1])/2
img=img.transform((img.size[1],img.size[1]),EXTENT,(offset,0,int(img.size[0]-offset),img.size[1]))
else:
offset=int(img.size[1]-img.size[0])/2
img=img.transform((img.size[0],img.size[0]),EXTENT,(0,offset,img.size[0],(img.size[1]-offset)))
img.thumbnail((300, 300))
这篇随笔 是《
Django&JQuery手动剪切个性头像》的后续.
分享到:
相关推荐
主要为大家详细介绍了python使用PIL剪切和拼接图片,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
基于python PIL库进行对图片的简单处理,用于熟悉PIL库的基本使用
主要介绍了使用Python的PIL模块来进行图片对比的方法,搜索引擎最基本的图片搜索也是利用图片颜色值的对比来实现的,需要的朋友可以参考下
python图像压缩脚本(内附PIL安装包和处理图片、基于SVD分解和图像重组)
python使用PIL库读取图片的像素值.
对于图像识别,大量的工作在于图像的处理的库,PIL库,python setup.py install 即可安装
所以需要通过判断图标所在的图片来实现自动化用例中的断言。 解决方案: 首先,需要定位到目标控件的坐标,然后截图,再将截图与期望图片进行比较。 这里主要需要解决的3个点: 获取图片控件坐标 截图 比较图片 经过...
基于遗传算法,利用python PIL库,使用100个三角形拟合100*100像素图片。
python剪切图片,调用PIL库做各种格式的图片的简单剪切
结束利用pil进行图像处理的一般方法和技巧,利用pil快速搭建图像处理平台
使用到 PIL 模块中的函数: Image.open :打开一张图片,获取 Image 对象。 Image.convert(mode='L') :将图片转为灰度图像 Image.crop :截取图片中的一块区域 Image.paste :将另外一张图片粘贴到当前图片中 Image...
SSIM-PIL 使用结构相似性算法(SSIM)比较两个图像。 对于相同的图像,结果值在1.0和完全不同的图像之间为0.0。 它基于PIL,还通过pyopencl支持GPU加速。安装python3 -m pip install SSIM-PIL 确保安装pyopencl的...
Python调用PIL实现图片合成(含证件照换背景) https://xercis.blog.csdn.net/article/details/107979207
目标检测VOC数据集:用PIL实现xml和图片的同步缩放
现在就给出用Python的PIL库实现验证码图片的代码。代码中有详细注释。 #!/usr/bin/env python #coding=utf-8 import random from PIL import Image, ImageDraw, ImageFont, ImageFilter _letter_cases = ...
Python PIL1.1.7 模块Python PIL1.1.7 模块Python PIL1.1.7 模块Python PIL1.1.7 模块Python PIL1.1.7 模块Python PIL1.1.7 模块Python PIL1.1.7 模块Python PIL1.1.7 模块Python PIL1.1.7 模块Python PIL1.1.7 模块...
#功能:通过模板图片 写入文字到指定位置,并分别保存成新的图片 #功能说明:根据"\n"换行 #环境:PyDev 6.5.0 Python3.5.2
python PIL包,用于图片解析,windows安装版exe.亲自测试
采用python PIL库编译的,用于tesseract自学习的图片识别测试