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中的并发编程实例
Jul 07 Python
python re正则表达式模块(Regular Expression)
Jul 16 Python
python使用pil生成图片验证码的方法
May 08 Python
windows系统下Python环境搭建教程
Mar 28 Python
Python引用类型和值类型的区别与使用解析
Oct 17 Python
微信跳一跳辅助python代码实现
Jan 05 Python
Django中使用极验Geetest滑动验证码过程解析
Jul 31 Python
使用pymysql查询数据库,把结果保存为列表并获取指定元素下标实例
May 15 Python
python opencv pytesseract 验证码识别的实现
Aug 28 Python
Python 高效编程技巧分享
Sep 10 Python
matplotlib 多个图像共用一个colorbar的实现示例
Sep 10 Python
最新Python idle下载、安装与使用教程图文详解
Nov 28 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
PHP 加密解密内部算法
2010/04/22 PHP
由php的call_user_func传reference引发的思考
2010/07/23 PHP
有关php运算符的知识大全
2011/11/03 PHP
PHP+Mysql日期时间如何转换(UNIX时间戳和格式化日期)
2012/07/15 PHP
Asp.net下利用Jquery Ajax实现用户注册检测(验证用户名是否存)
2010/09/12 Javascript
JS判断不同分辨率调用不同的CSS样式文件实现思路及测试代码
2013/01/23 Javascript
js随机颜色代码的多种实现方式
2013/04/23 Javascript
JavaScript动态创建div等元素实例讲解
2016/01/06 Javascript
jQuery拖拽通过八个点改变div大小
2020/11/29 Javascript
vue实现一个移动端屏蔽滑动的遮罩层实例
2017/06/08 Javascript
基于Vue实现页面切换左右滑动效果
2020/06/29 Javascript
解决vue中虚拟dom,无法实时更新的问题
2018/09/15 Javascript
使用vue2实现带地区编号和名称的省市县三级联动效果
2018/11/05 Javascript
vue拖拽组件 vuedraggable API options实现盒子之间相互拖拽排序
2019/07/08 Javascript
JS用最简单的方法实现四舍五入
2019/08/27 Javascript
JavaScript设计模式之观察者模式与发布订阅模式详解
2020/05/07 Javascript
python的pdb调试命令的命令整理及实例
2017/07/12 Python
简单实现python收发邮件功能
2018/01/05 Python
PyQt5每天必学之创建窗口居中效果
2018/04/19 Python
matplotlib subplots 调整子图间矩的实例
2018/05/25 Python
Python实现监控键盘鼠标操作示例【基于pyHook与pythoncom模块】
2018/09/04 Python
详解Python中的测试工具
2019/06/09 Python
python 函数中的内置函数及用法详解
2019/07/02 Python
利用python画出AUC曲线的实例
2020/02/28 Python
eBay瑞士购物网站:eBay.ch
2018/12/24 全球购物
Pretty Green美国:英式摇滚服饰风格代表品牌之一
2019/01/23 全球购物
介绍一下Linux中的链接
2016/05/28 面试题
飘柔洗发水广告词
2014/03/14 职场文书
恶搞卫生巾广告词
2014/03/18 职场文书
团日活动总结书格式
2014/05/08 职场文书
党委班子剖析材料
2014/08/21 职场文书
2014法院四风问题对照检查材料思想汇报
2014/10/04 职场文书
高中生综合素质自我评价
2015/03/06 职场文书
pytorch中Schedule与warmup_steps的用法说明
2021/05/24 Python
Redis入门教程详解
2021/08/30 Redis
MySQL中一条update语句是如何执行的
2022/03/16 MySQL