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中的多进程与多线程的使用
Apr 07 Python
Python中__new__与__init__方法的区别详解
May 04 Python
Python判断两个对象相等的原理
Dec 12 Python
TensorFlow高效读取数据的方法示例
Feb 06 Python
Python实现读取字符串按列分配后按行输出示例
Apr 17 Python
python装饰器的特性原理详解
Dec 25 Python
tensorflow ckpt模型和pb模型获取节点名称,及ckpt转pb模型实例
Jan 21 Python
windows、linux下打包Python3程序详细方法
Mar 17 Python
浅谈Python 命令行参数argparse写入图片路径操作
Jul 12 Python
python实现学生管理系统开发
Jul 24 Python
Python连接mysql数据库及简单增删改查操作示例代码
Aug 03 Python
Django扫码抽奖平台的配置过程详解
Jan 14 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 max_execution_time执行时间问题
2011/07/17 PHP
浅谈PHP调用Webservice思路及源码分享
2014/06/04 PHP
仿dedecms下拉分页样式修改的thinkphp分页类实例
2014/10/30 PHP
PHP间隔一段时间执行代码的方法
2014/12/02 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
博客侧边栏模块跟随滚动条滑动固定效果的实现方法(js+jquery等)
2013/03/24 Javascript
jQuery中DOM操作实例分析
2015/01/23 Javascript
学习JavaScript设计模式(接口)
2015/11/26 Javascript
EasyUI Pagination 分页的两种做法小结
2016/07/09 Javascript
原生js的RSA和AES加密解密算法
2016/10/08 Javascript
Vue+axios 实现http拦截及路由拦截实例
2017/04/25 Javascript
对vue中v-on绑定自定事件的实例讲解
2018/09/06 Javascript
js使用formData实现批量上传
2020/03/27 Javascript
jquery+css3实现的经典弹出层效果示例
2020/05/16 jQuery
JSONObject与JSONArray使用方法解析
2020/09/28 Javascript
React Ant Design树形表格的复杂增删改操作
2020/11/02 Javascript
ES6 十大特性简介
2020/12/09 Javascript
js+for循环实现字符串自动转义的代码(把后面的字符替换前面的字符)
2020/12/24 Javascript
linux平台使用Python制作BT种子并获取BT种子信息的方法
2017/01/20 Python
Python如何import文件夹下的文件(实现方法)
2017/01/24 Python
Python中工作日类库Busines Holiday的介绍与使用
2017/07/06 Python
Java实现的执行python脚本工具类示例【使用jython.jar】
2018/03/29 Python
Python中pandas模块DataFrame创建方法示例
2018/06/20 Python
python将字符串转换成json的方法小结
2019/07/09 Python
Python流程控制 while循环实现解析
2019/09/02 Python
centos7中安装python3.6.4的教程
2019/12/11 Python
使用anaconda安装pytorch的实现步骤
2020/09/03 Python
公司请假条格式
2014/04/11 职场文书
人事任命书怎么写
2014/06/05 职场文书
教师求职简历自我评价
2015/03/10 职场文书
2015年工程师工作总结
2015/04/30 职场文书
2015年中职班主任工作总结
2015/05/25 职场文书
2016年员工年度考核评语
2015/12/02 职场文书
如何解决goland,idea全局搜索快捷键失效问题
2022/04/03 Golang
Python Pytorch查询图像的特征从集合或数据库中查找图像
2022/04/09 Python
Go 内联优化让程序员爱不释手
2022/06/21 Golang