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从网络读取图片并直接进行处理的方法
May 22 Python
全面解析Python的While循环语句的使用方法
Oct 13 Python
python实现爬虫统计学校BBS男女比例(一)
Dec 31 Python
Python两个内置函数 locals 和globals(学习笔记)
Aug 28 Python
Python编程之字符串模板(Template)用法实例分析
Jul 22 Python
在pandas中一次性删除dataframe的多个列方法
Apr 10 Python
django 发送邮件和缓存的实现代码
Jul 18 Python
在win10和linux上分别安装Python虚拟环境的方法步骤
May 09 Python
python图片验证码识别最新模块muggle_ocr的示例代码
Jul 03 Python
python归并排序算法过程实例讲解
Nov 04 Python
Matlab求解数组中的最大值及它所在的具体位置
Apr 16 Python
利用Python+OpenCV三步去除水印
May 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
一次编写,随处运行
2006/10/09 PHP
php处理斐波那契数列非递归方法
2012/02/04 PHP
PHP setTime 设置当前时间的代码
2012/08/27 PHP
PHP编程函数安全篇
2013/01/08 PHP
PHP实现生成透明背景的PNG缩略图函数分享
2014/07/08 PHP
WordPress中设置Post Type自定义文章类型的实例教程
2016/05/10 PHP
PHP magento后台无法登录问题解决方法
2016/11/24 PHP
javascript新手语法小结
2008/06/15 Javascript
JS代码同步文本框内容的实例方法
2013/07/12 Javascript
jquery选择器之内容过滤选择器详解
2014/01/27 Javascript
jQuery过滤选择器:not()方法使用介绍
2014/04/20 Javascript
Node.js 学习笔记之简介、安装及配置
2015/03/03 Javascript
关于backbone url请求中参数带有中文存入数据库是乱码的快速解决办法
2016/06/13 Javascript
学习JavaScript图片预加载模块
2016/11/07 Javascript
基于Phantomjs生成PDF的实现方法
2016/11/07 Javascript
详解vue.js的事件处理器v-on:click
2017/06/27 Javascript
JavaScript定时器setTimeout()和setInterval()详解
2017/08/18 Javascript
引入JavaScript时alert弹出框显示中文乱码问题
2017/09/16 Javascript
浅析Vue自定义组件的v-model
2017/11/26 Javascript
浅谈vue单页面中有多个echarts图表时的公用代码写法
2020/07/19 Javascript
javascript解析json格式的数据方法详解
2020/08/07 Javascript
js实现带有动画的返回顶部
2020/08/09 Javascript
微信小程序实现购物车功能
2020/11/18 Javascript
python使用cookie库操保存cookie详解
2014/03/03 Python
Python基础教程之浅拷贝和深拷贝实例详解
2017/07/15 Python
Random 在 Python 中的使用方法
2018/08/09 Python
python简单贪吃蛇开发
2019/01/28 Python
python SVD压缩图像的实现代码
2019/11/05 Python
python实现简单坦克大战
2020/03/27 Python
Matplotlib中%matplotlib inline如何使用
2020/07/28 Python
文明社区申报材料
2014/08/21 职场文书
地球物理学专业推荐信
2014/09/08 职场文书
多表查询、事务、DCL
2021/04/05 MySQL
Feign调用全局异常处理解决方案
2021/06/24 Java/Android
eclipse创建项目没有dynamic web的解决方法
2021/06/24 Java/Android
python+pytest接口自动化之token关联登录的实现
2022/04/06 Python