python制作图片缩略图


Posted in Python onApril 30, 2019

缩略图

在很多时候我们都需要将图片按照同比例缩小有利于存储 但是一张张手动去改的话太麻烦了 今天我们就用python实现一个简单的将一个文件夹中的所有图片进行指定大小的调整

缩略前:

python制作图片缩略图

代码:

import os
import glob
from PIL import Image

def thumbnail_pic(path):
 #glob.glob(pathname),返回所有匹配的文件路径列表
 a=glob.glob(r'./img/*.jpg')
 for x in a:
 name=os.path.join(path,x)
 im=Image.open(name)
 im.thumbnail((80,80))
 print(im.format,im.size,im.mode)
 im.save(name,'JPEG')
 print('Done!')

if __name__=='__main__':
 path='.'
 thumbnail_pic(path)

缩略后:

python制作图片缩略图

参数使用说明:

1、os模块,python的os模块封装了常见的文件和目录操作。
2、PIL模块中Image类thumbnail()方法可以用来制作缩略图,它接受一个二元数组作为缩略图的尺寸,然后将示例缩小到指定尺寸。

Image.resize()和Image.thumbnail()的区别
根据代码和代码注释, 这两个函数都是对图片进行缩放, 两者的主要区别如下:

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

使用scrapy爬虫框架制作缩略图

Images Pipeline为处理图片提供了额外的功能:

  • 将所有下载的图片格式转换成普通的JPG并使用RGB颜色模式
  • 生成缩略图
  • 检查图片的宽度和高度确保它们满足最小的尺寸限制

管道同时会在内部保存一个被调度下载的URL列表,然后将包含相同媒体的相应关联到这个队列上来,从而防止了多个item共享这个媒体时重复下载。

ImagesPipeline使用Pillow来生成缩略图以及转换成标准的JPEG/RGB格式。因此你需要安装这个包,我们建议你使用Pillow而不是PIL。

配置setting.py

# 同时使用图片和文件管道
ITEM_PIPELINES = {
   'scrapy.pipelines.images.ImagesPipeline': 1,
   'scrapy.pipelines.files.FilesPipeline': 2,
   }
# 指定图片字段
IMAGES_URLS_FIELD = 'images'
IMAGES_STORE = '/path/to/valid/dir' # 图片存储路径
# 文件过期90天
FILES_EXPIRES = 90
# 图像过期延迟30天
IMAGES_EXPIRES = 30
# 图片缩略图
IMAGES_THUMBS = {
 'small': (50, 50),
 'big': (270, 270),
}
# 图片过滤器,最小高度和宽度
IMAGES_MIN_HEIGHT = 110
IMAGES_MIN_WIDTH = 110

pipeline.py文件

class YuehuiImagePipeline(ImagesPipeline):
 def item_completed(self, results, item, info):
 if results[0][0]:
  item['image_path'] = results[0][1]['path']
 else:
  item['image_path'] = ''

 return item

items.py

class YuehuiItem(scrapy.Item):
 uid= scrapy.Field()
 height = scrapy.Field()
 weight = scrapy.Field()
 images = scrapy.Field() #头像url字段 要求列表 在setting文件中配置
 image_path = scrapy.Field()

以上为个人使用scrapy保存缩略图的总结。

Python 相关文章推荐
用Python输出一个杨辉三角的例子
Jun 13 Python
用实例解释Python中的继承和多态的概念
Apr 27 Python
python中利用Future对象异步返回结果示例代码
Sep 07 Python
Python进程间通信之共享内存详解
Oct 30 Python
python如何压缩新文件到已有ZIP文件
Mar 14 Python
如何使用VSCode愉快的写Python于调试配置步骤
Apr 06 Python
Python设计模式之抽象工厂模式原理与用法详解
Jan 15 Python
Python Gitlab Api 使用方法
Aug 28 Python
Python3+Requests+Excel完整接口自动化测试框架的实现
Oct 11 Python
python多线程实现代码(模拟银行服务操作流程)
Jan 13 Python
python3 通过 pybind11 使用Eigen加速代码的步骤详解
Dec 07 Python
python自动打开浏览器下载zip并提取内容写入excel
Jan 04 Python
python获取微信企业号打卡数据并生成windows计划任务
Apr 30 #Python
使用Python实现企业微信的自动打卡功能
Apr 30 #Python
Python/Django后端使用PIL Image生成头像缩略图
Apr 30 #Python
Python3.5迭代器与生成器用法实例分析
Apr 30 #Python
python使用Paramiko模块实现远程文件拷贝
Apr 30 #Python
Django学习笔记之为Model添加Action
Apr 30 #Python
Python Opencv实现图像轮廓识别功能
Mar 23 #Python
You might like
一键删除顽固的空文件夹 软件下载
2007/01/26 PHP
CodeIgniter框架验证码类库文件与用法示例
2017/03/18 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
AJAX架构之Dojo篇
2007/04/10 Javascript
javascript禁用Tab键脚本实例
2013/11/22 Javascript
使用FlexiGrid实现Extjs表格效果方法分享
2014/12/16 Javascript
用js判断是否为360浏览器的实现代码
2015/01/15 Javascript
JQ实现新浪游戏首页幻灯片
2015/07/29 Javascript
提升jQuery的性能需要做好七件事
2016/01/11 Javascript
JS中使用mailto实现将用户在网页中输入的内容传递到本地邮件客户端
2016/10/08 Javascript
微信小程序 开发MAP(地图)实例详解
2017/06/27 Javascript
JavaScript闭包和回调详解
2017/08/09 Javascript
Mac 安装 nodejs方法(图文详细步骤)
2017/10/30 NodeJs
nodejs判断文件、文件夹是否存在及删除的方法
2017/11/10 NodeJs
Vue中Quill富文本编辑器的使用教程
2018/09/21 Javascript
checkbox在vue中的用法小结
2018/11/13 Javascript
浅谈nuxtjs校验登录中间件和混入(mixin)
2020/11/06 Javascript
Python 序列化 pickle/cPickle模块使用介绍
2014/11/30 Python
Python 的类、继承和多态详解
2017/07/16 Python
Python实现定时精度可调节的定时器
2018/04/15 Python
python开启debug模式的方法
2019/06/27 Python
Python如何基于rsa模块实现非对称加密与解密
2020/01/03 Python
Python3的socket使用方法详解
2020/02/18 Python
Python无头爬虫下载文件的实现
2020/04/02 Python
python 如何对logging日志封装
2020/12/02 Python
详解HTML5布局和HTML5标签
2020/10/26 HTML / CSS
美国玩具公司:U.S.Toy
2018/05/19 全球购物
意大利独特而优质的家居用品:Fazzini
2018/12/05 全球购物
Paradox London官方网站:英国新娘鞋婚礼鞋品牌
2019/08/29 全球购物
十一个高级MySql面试题
2014/10/06 面试题
Java如何获得ResultSet的总行数
2016/09/03 面试题
2014迎新年晚会策划方案
2014/02/23 职场文书
爱心捐款倡议书范文
2014/05/12 职场文书
端午节活动总结报告
2015/02/11 职场文书
公司车队管理制度
2015/08/04 职场文书
导游词之河北白洋淀
2020/01/15 职场文书