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爬虫代理IP快速增加博客阅读量
Dec 14 Python
Python如何读取MySQL数据库表数据
Mar 11 Python
Python多进程库multiprocessing中进程池Pool类的使用详解
Nov 24 Python
Python实现识别手写数字 Python图片读入与处理
Mar 23 Python
flask入门之表单的实现
Jul 18 Python
浅谈python实现Google翻译PDF,解决换行的问题
Nov 28 Python
Python 计算任意两向量之间的夹角方法
Jul 05 Python
利用python-pypcap抓取带VLAN标签的数据包方法
Jul 23 Python
python+tkinter实现学生管理系统
Aug 20 Python
Golang GBK转UTF-8的例子
Aug 26 Python
python二维键值数组生成转json的例子
Dec 06 Python
matplotlib之pyplot模块实现添加子图subplot的使用
Apr 25 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获取当前日期所在星期(月份)的开始日期与结束日期(实现代码)
2013/06/18 PHP
php 实现进制相互转换
2016/04/07 PHP
php文件管理基本功能简单操作
2017/01/16 PHP
php中输出json对象的值(实现方法)
2018/03/07 PHP
JavaScript 设计模式 富有表现力的Javascript(一)
2010/05/26 Javascript
基于jQuery的树控件实现代码(asp.net+json)
2010/07/11 Javascript
js运动框架_包括图片的淡入淡出效果
2013/05/11 Javascript
jquery实现在页面加载的时自动为日期插件添加当前日期
2014/08/20 Javascript
使用do...while的方法输入一个月中所有的周日(实例代码)
2016/07/22 Javascript
Angularjs根据json文件动态生成路由状态的实现方法
2017/04/17 Javascript
ES6中字符串string常用的新增方法小结
2017/11/07 Javascript
chorme 浏览器记住密码后input黄色背景处理方法(两种)
2017/11/22 Javascript
vue组件中使用iframe元素的示例代码
2017/12/13 Javascript
浅谈Vue路由快照实现思路及其问题
2018/06/07 Javascript
JS异步执行结果获取的3种解决方式
2019/02/19 Javascript
JavaScript解析JSON数据示例
2019/07/16 Javascript
js实现多张图片每隔一秒切换一张图片
2019/07/29 Javascript
element-ui中dialog弹窗关闭按钮失效的解决
2020/09/22 Javascript
[42:25]EG vs Spirit Supermajor 败者组 BO3 第二场 6.4
2018/06/05 DOTA
Python Deque 模块使用详解
2014/07/04 Python
全面解析Python的While循环语句的使用方法
2015/10/13 Python
利用Python循环(包括while&for)各种打印九九乘法表的实例
2017/11/06 Python
Python 快速实现CLI 应用程序的脚手架
2017/12/05 Python
pytorch + visdom 处理简单分类问题的示例
2018/06/04 Python
用 Django 开发一个 Python Web API的方法步骤
2020/12/03 Python
浅析CSS3中鲜为人知的属性:-webkit-tap-highlight-color
2017/01/12 HTML / CSS
苹果中国官方网站:Apple中国
2016/07/22 全球购物
软件测试笔试题
2012/10/25 面试题
物流管理应届生求职信
2013/11/07 职场文书
先进集体事迹材料
2014/02/17 职场文书
本科生就业推荐信
2014/05/19 职场文书
环境日宣传活动总结
2014/07/09 职场文书
公司委托书怎么写
2014/08/02 职场文书
2014超市双十一活动策划方案
2014/09/29 职场文书
2019初中学生入团申请书
2019/06/27 职场文书
Redis实战高并发之扣减库存项目
2022/04/14 Redis