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程序中操作文件之flush()方法的使用教程
May 24 Python
python获取各操作系统硬件信息的方法
Jun 03 Python
浅析Python的Django框架中的Memcached
Jul 23 Python
python socket多线程通讯实例分析(聊天室)
Apr 06 Python
利用Python为iOS10生成图标和截屏
Sep 24 Python
详解Python Matplot中文显示完美解决方案
Mar 07 Python
Python3enumrate和range对比及示例详解
Jul 13 Python
python如何从文件读取数据及解析
Sep 19 Python
Pytorch 数据加载与数据预处理方式
Dec 31 Python
pytorch 获取tensor维度信息示例
Jan 03 Python
python利用os模块编写文件复制功能——copy()函数用法
Jul 13 Python
python绘制趋势图的示例
Sep 17 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中sql注入漏洞示例 sql注入漏洞修复
2014/01/24 PHP
php表单处理操作
2017/11/16 PHP
PHP var关键字相关原理及使用实例解析
2020/07/11 PHP
微信小程序 购物车简单实例
2016/10/24 Javascript
js实现图片加载淡入淡出效果
2017/04/07 Javascript
JS 判断某变量是否为某数组中的一个值的3种方法(总结)
2017/07/10 Javascript
Angular 1.x个人使用的经验小结
2017/07/19 Javascript
vue2.0设置proxyTable使用axios进行跨域请求的方法
2017/10/19 Javascript
React-native桥接Android原生开发详解
2018/01/17 Javascript
nodejs实现的简单web服务器功能示例
2018/03/15 NodeJs
jQuery实现购物车的总价计算和总价传值功能
2018/11/28 jQuery
深入理解Vue.js轻量高效的前端组件化方案
2018/12/10 Javascript
详解webpack4.x之搭建前端开发环境
2019/03/28 Javascript
jquery+css实现Tab栏切换的代码实例
2019/05/14 jQuery
详解基于Vue/React项目的移动端适配方案
2019/08/23 Javascript
countUp.js实现数字动态变化效果
2019/10/17 Javascript
[54:33]2018DOTA2亚洲邀请赛小组赛 A组加赛 Liquid vs Optic
2018/04/03 DOTA
[48:21]Mski vs VGJ.S Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
python回调函数用法实例分析
2015/05/09 Python
Python求导数的方法
2015/05/09 Python
python构建基础的爬虫教学
2018/12/23 Python
Python按钮的响应事件详解
2019/03/04 Python
pandas的排序和排名的具体使用
2019/07/31 Python
HTML5实现移动端弹幕动画效果
2019/08/01 HTML / CSS
中国跨境电子商务网站:NewFrog
2018/03/10 全球购物
海量信息软件测试笔试题
2015/08/08 面试题
毕业生就业协议书
2014/04/11 职场文书
安全生产目标责任书
2014/04/14 职场文书
《第一次抱母亲》教学反思
2014/04/16 职场文书
再婚婚前财产协议书范本
2014/10/19 职场文书
区域销售大会开幕词
2016/03/04 职场文书
2019入党申请书格式和范文
2019/06/25 职场文书
Python-OpenCV实现图像缺陷检测的实例
2021/06/11 Python
Django中session进行权限管理的使用
2021/07/09 Python
Win11 Build 22000.51版本文件资源管理器“命令栏”和上下文菜单有什么新变化?
2021/11/21 数码科技
实战 快速定位MySQL的慢SQL
2022/03/22 MySQL