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编程修改MP3文件名称的方法
Apr 19 Python
Python实现一个转存纯真IP数据库的脚本分享
May 21 Python
Python实现将SQLite中的数据直接输出为CVS的方法示例
Jul 13 Python
Python算法输出1-9数组形成的结果为100的所有运算式
Nov 03 Python
python中join()方法介绍
Oct 11 Python
解决python ogr shp字段写入中文乱码的问题
Dec 31 Python
django解决跨域请求的问题详解
Jan 20 Python
利用PyCharm操作Github(仓库新建、更新,代码回滚)
Dec 18 Python
将数据集制作成VOC数据集格式的实例
Feb 17 Python
pymysql 插入数据 转义处理方式
Mar 02 Python
python 密码学示例——理解哈希(Hash)算法
Sep 21 Python
pycharm debug 断点调试心得分享
Apr 16 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 正确解码javascript中通过escape编码后的字符
2010/01/28 PHP
Yii2 GridView实现列表页直接修改数据的方法
2016/05/16 PHP
PHP 常用时间函数资料整理
2016/10/22 PHP
ThinkPHP实现静态缓存和动态缓存示例代码
2017/05/02 PHP
PHP whois查询类定义与用法示例
2019/04/03 PHP
Laravel 自带的Auth验证登录方法
2019/09/30 PHP
Javascript 面向对象 重载
2010/05/13 Javascript
JS分页控件 可用于无刷新分页
2013/07/23 Javascript
php与js的区别是什么
2013/08/05 Javascript
文本框中禁止非数字字符输入比如手机号码、邮编
2013/08/19 Javascript
javascript中全局对象的isNaN()方法使用介绍
2013/12/19 Javascript
关于javascript中dataset的问题小结
2015/11/16 Javascript
Jquery循环截取字符串的方法(多出的字符串处理成"...")
2016/11/28 Javascript
EasyUI修改DateBox和DateTimeBox的默认日期格式示例
2017/01/18 Javascript
JS验证全角与半角及相互转化的介绍
2017/05/18 Javascript
利用canvas实现的加载动画效果实例代码
2017/07/05 Javascript
jQuery选择器特殊字符与属性空格问题
2017/08/14 jQuery
jQuery实现的form转json经典示例
2017/10/10 jQuery
基于vue-video-player自定义播放器的方法
2018/03/21 Javascript
JavaScript事件对象event用法分析
2018/07/27 Javascript
uni-app 组件里面获取元素宽高的实现
2019/12/27 Javascript
Python实现利用最大公约数求三个正整数的最小公倍数示例
2017/09/30 Python
tensorflow入门之训练简单的神经网络方法
2018/02/26 Python
对python中使用requests模块参数编码的不同处理方法
2018/05/18 Python
python pygame实现方向键控制小球
2019/05/17 Python
Django框架模板文件使用及模板文件加载顺序分析
2019/05/23 Python
python3+selenium获取页面加载的所有静态资源文件链接操作
2020/05/04 Python
JBL澳大利亚官方商店:扬声器、耳机和音响系统
2018/05/24 全球购物
女士和男士时尚鞋在线购物:Shoespie
2019/02/28 全球购物
Lookfantastic意大利官网:英国知名美妆购物网站
2019/05/31 全球购物
销售会计工作职责
2013/12/02 职场文书
七一表彰活动方案
2014/01/18 职场文书
服装创业计划书范文
2014/02/05 职场文书
2015年社区服务活动总结
2015/03/25 职场文书
教你用Python写一个植物大战僵尸小游戏
2021/04/25 Python
JavaScript事件的委托(代理)的用法示例详解
2022/02/18 Javascript