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利用Beautiful Soup模块搜索内容详解
Mar 29 Python
详解Python import方法引入模块的实例
Aug 02 Python
Python从零开始创建区块链
Mar 06 Python
Python File readlines() 使用方法
Mar 19 Python
python实现停车管理系统
Nov 30 Python
使用IDLE的Python shell窗口实例详解
Nov 19 Python
使用python的turtle函数绘制一个滑稽表情
Feb 28 Python
Opencv求取连通区域重心实例
Jun 04 Python
python 读取、写入txt文件的示例
Sep 27 Python
python中添加模块导入路径的方法
Feb 03 Python
python3实现常见的排序算法(示例代码)
Jul 04 Python
详解解Django 多对多表关系的三种创建方式
Aug 23 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
深入理解require与require_once与include以及include_once的区别
2013/06/05 PHP
php以post形式发送xml的方法
2014/11/04 PHP
php获取四位字母和数字的随机数的实现方法
2015/01/09 PHP
[原创]php实现子字符串位置相互对调互换的方法
2016/06/02 PHP
PHP实现的简单排列组合算法应用示例
2017/06/20 PHP
javascript 密码强弱度检测万能插件
2009/02/25 Javascript
Node.js:Windows7下搭建的Node.js服务(来玩玩服务器端的javascript吧,这可不是前端js插件)
2011/06/27 Javascript
基于JavaScript 下namespace 功能的简单分析
2013/07/05 Javascript
js中判断用户输入的值是否为空的简单实例
2013/12/23 Javascript
使用jquery 简单实现下拉菜单
2015/01/14 Javascript
Javascript中数组方法汇总(推荐)
2015/04/01 Javascript
小议JavaScript中Generator和Iterator的使用
2015/07/29 Javascript
node.js require() 源码解读
2015/12/13 Javascript
javascript面向对象程序设计高级特性经典教程(值得收藏)
2016/05/19 Javascript
webstorm添加vue.js支持的方法教程
2017/07/05 Javascript
JS Testing Properties 判断属性是否在对象里的方法
2017/10/01 Javascript
JavaScript数据结构与算法之队列原理与用法实例详解
2017/11/22 Javascript
记一次webapck4 配置文件无效的解决历程
2018/09/19 Javascript
使用Python中的greenlet包实现并发编程的入门教程
2015/04/16 Python
python使用fcntl模块实现程序加锁功能示例
2017/06/23 Python
利用Python如何制作好玩的GIF动图详解
2018/07/11 Python
python引入不同文件夹下的自定义模块方法
2018/10/27 Python
如何使用pandas读取txt文件中指定的列(有无标题)
2020/03/05 Python
python和pywin32实现窗口查找、遍历和点击的示例代码
2020/04/01 Python
Python读入mnist二进制图像文件并显示实例
2020/04/24 Python
使用已经得到的keras模型识别自己手写的数字方式
2020/06/29 Python
Django admin组件的使用
2020/10/24 Python
美国现代家具购物网站:LexMod
2019/01/09 全球购物
毕业生毕业总结的自我评价范文
2013/11/02 职场文书
园林技术个人的自我评价
2014/01/08 职场文书
2014学年自我鉴定
2014/02/23 职场文书
会计做账心得体会
2016/01/22 职场文书
mysql中整数数据类型tinyint详解
2021/12/06 MySQL
vue使用refs获取嵌套组件中的值过程
2022/03/31 Vue.js
SpringCloud Function SpEL注入漏洞分析及环境搭建
2022/04/08 Java/Android
Python编写冷笑话生成器
2022/04/20 Python