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 相关文章推荐
pygame学习笔记(3):运动速率、时间、事件、文字
Apr 15 Python
python中实现迭代器(iterator)的方法示例
Jan 19 Python
Python数据分析之如何利用pandas查询数据示例代码
Sep 01 Python
Python paramiko模块的使用示例
Apr 11 Python
Python3爬虫学习之MySQL数据库存储爬取的信息详解
Dec 12 Python
Python3爬虫之urllib携带cookie爬取网页的方法
Dec 28 Python
Python解析json代码实例解析
Nov 25 Python
python基于opencv检测程序运行效率
Dec 28 Python
django在保存图像的同时压缩图像示例代码详解
Feb 11 Python
python使用Thread的setDaemon启动后台线程教程
Apr 25 Python
简单介绍一下pyinstaller打包以及安全性的实现
Jun 02 Python
Scrapy框架介绍之Puppeteer渲染的使用
Jun 19 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程序防止ddos,dns,集群服务器攻击的解决办法
2013/06/18 PHP
php实现的CSS更新类实例
2014/09/22 PHP
php三种实现多线程类似的方法
2015/10/30 PHP
微信利用PHP创建自定义菜单的方法
2016/08/01 PHP
基于SVG的web页面图形绘制API介绍及编程演示
2013/06/28 Javascript
如何从jQuery的ajax请求中删除X-Requested-With
2013/12/11 Javascript
jquery使用append(content)方法注意事项分享
2014/01/06 Javascript
javascript中setAttribute()函数使用方法及兼容性
2015/07/19 Javascript
基于JavaScript实现 网页切出 网站title变化代码
2016/04/03 Javascript
jQuery+php实时获取及响应文本框输入内容的方法
2016/05/24 Javascript
jQuery插件HighCharts绘制的基本折线图效果示例【附demo源码下载】
2017/03/07 Javascript
使用Vue自定义指令实现Select组件
2018/05/24 Javascript
cdn模式下vue的基本用法详解
2018/10/07 Javascript
javascript异步处理与Jquery deferred对象用法总结
2019/06/04 jQuery
javascript网页随机点名实现过程解析
2019/10/15 Javascript
javascript+css实现进度条效果
2020/03/25 Javascript
[02:28]DOTA2英雄基础教程 灰烬之灵
2013/12/19 DOTA
[48:12]Secret vs Optic Supermajor 胜者组 BO3 第三场 6.4
2018/06/05 DOTA
Python中利用sqrt()方法进行平方根计算的教程
2015/05/15 Python
django基础之数据库操作方法(详解)
2017/05/24 Python
Python使用Phantomjs截屏网页的方法
2018/05/17 Python
Python中请不要再用re.compile了
2019/06/30 Python
python中怎么表示空值
2020/06/19 Python
使用Keras建立模型并训练等一系列操作方式
2020/07/02 Python
Python执行时间的几种计算方法
2020/07/31 Python
HTML5拖放功能_动力节点Java学院整理
2017/07/13 HTML / CSS
人民教师的自我评价分享
2014/02/21 职场文书
个人委托书
2014/07/31 职场文书
党的群众路线教育实践活动对照检查材料(四风)
2014/09/27 职场文书
庆七一宣传标语
2014/10/08 职场文书
2014年营销工作总结
2014/11/22 职场文书
MySQL查看表和清空表的常用命令总结
2021/05/26 MySQL
Django与数据库交互的实现
2021/06/03 Python
Nginx配置之实现多台服务器负载均衡
2021/08/02 Servers
Python使用DFA算法过滤内容敏感词
2022/04/22 Python
搭建Yolov5服务器
2022/04/30 Servers