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 MySQLdb Linux下安装笔记
May 09 Python
详解python函数传参是传值还是传引用
Jan 16 Python
Pyspider中给爬虫伪造随机请求头的实例
May 07 Python
Python生成器generator用法示例
Aug 10 Python
python框架中flask知识点总结
Aug 17 Python
深入浅析python3中的unicode和bytes问题
Jul 03 Python
利用Python检测URL状态
Jul 31 Python
django创建简单的页面响应实例教程
Sep 06 Python
使用Python防止SQL注入攻击的实现示例
May 21 Python
Python预测2020高考分数和录取情况
Jul 08 Python
python两种获取剪贴板内容的方法
Nov 06 Python
Python经典五人分鱼实例讲解
Jan 04 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不用内置函数对数组排序的两个算法代码
2010/02/08 PHP
php生成随机密码的几种方法
2011/01/17 PHP
php中header跳转使用include包含解决参数丢失问题
2015/05/08 PHP
简单谈谈favicon
2015/06/10 PHP
JavaScript-世界上误解最深的语言分析
2007/08/12 Javascript
jQuery 处理表单元素的代码
2010/02/15 Javascript
javascript数组去掉重复
2011/05/12 Javascript
jquery弹出关闭遮罩层实例
2013/08/06 Javascript
浅谈javascript属性onresize
2015/04/20 Javascript
跟我学习javascript解决异步编程异常方案
2015/11/23 Javascript
理解JavaScript中Promise的使用
2016/01/18 Javascript
基于javascript实现图片切换效果
2016/04/17 Javascript
浅析Bootstrap验证控件的使用
2016/06/23 Javascript
bootstrap table 数据表格行内修改的实现代码
2017/02/13 Javascript
将input框中输入内容显示在相应的div中【三种方法可选】
2017/05/08 Javascript
Ionic项目中Native Camera的使用方法
2017/06/07 Javascript
最通俗易懂的javascript变量提升详解
2017/08/05 Javascript
基于IView中on-change属性的使用详解
2018/03/15 Javascript
Vue $mount实战之实现消息弹窗组件
2019/04/22 Javascript
Vue中使用better-scroll实现轮播图组件
2020/03/07 Javascript
JavaScript实现多个物体同时运动
2020/03/12 Javascript
[00:17]天涯墨客一技能展示
2018/08/25 DOTA
python中字符串前面加r的作用
2015/06/04 Python
彻底搞懂Python字符编码
2018/01/23 Python
python实现小球弹跳效果
2019/05/10 Python
python实现拼图小游戏
2020/02/22 Python
两种CSS3伪类选择器详细介绍
2013/12/24 HTML / CSS
css3实现平移效果(transfrom:translate)的示例
2020/11/13 HTML / CSS
IBatis持久层技术
2016/07/18 面试题
优秀团队获奖感言
2014/02/19 职场文书
小学兴趣小组活动总结
2014/07/07 职场文书
售票员岗位职责
2015/02/15 职场文书
商务英语邮件开头问候语
2015/11/10 职场文书
Django rest framework如何自定义用户表
2021/06/09 Python
解决persistence.xml配置文件修改存放路径的问题
2022/02/24 Java/Android
CSS中理解层叠性及权重如何分配
2022/12/24 HTML / CSS