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实现apahce网站日志分析示例
Apr 02 Python
仅用50行代码实现一个Python编写的计算器的教程
Apr 17 Python
在Python的Django框架中编写编译函数
Jul 20 Python
python 把数据 json格式输出的实例代码
Oct 31 Python
对python 生成拼接xml报文的示例详解
Dec 28 Python
matplotlib命令与格式之tick坐标轴日期格式(设置日期主副刻度)
Aug 06 Python
调用其他python脚本文件里面的类和方法过程解析
Nov 15 Python
wxpython多线程防假死与线程间传递消息实例详解
Dec 13 Python
pytorch载入预训练模型后,实现训练指定层
Jan 06 Python
python编程进阶之类和对象用法实例分析
Feb 21 Python
关于Python Tkinter Button控件command传参问题的解决方式
Mar 04 Python
Python selenium实现断言3种方法解析
Sep 08 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字符串长度计算 - strlen()函数使用介绍
2013/10/15 PHP
微信公众平台开发-微信服务器IP接口实例(含源码)
2017/03/05 PHP
Laravel 添加多语言提示信息的方法
2019/09/29 PHP
用Javascript做flash做的事..才完成的一个类.Auntion Action var 0.1
2007/02/23 Javascript
Javascript创建Silverlight Plugin以及自定义nonSilverlight和lowSilverlight样式
2010/06/28 Javascript
DIY jquery plugin - tabs标签切换实现代码
2010/12/11 Javascript
js页面跳转的问题(跳转到父页面、最外层页面、本页面)
2013/08/14 Javascript
jquery中常用的SET和GET$(”#msg”).html循环介绍
2013/10/09 Javascript
JavaScript中isPrototypeOf函数作用和使用实例
2015/06/01 Javascript
Bootstrap3.0建站教程(一)之bootstrap表单元素排版
2016/06/01 Javascript
Nodejs下DNS缓存问题浅析
2016/11/16 NodeJs
JS声明式函数与赋值式函数实例分析
2016/12/13 Javascript
基于angular2 的 http服务封装的实例代码
2017/06/29 Javascript
js移动端事件基础及常用事件库详解
2017/08/15 Javascript
layui表格数据复选框回显设置方法
2019/09/13 Javascript
flask框架使用orm连接数据库的方法示例
2018/07/16 Python
Python 经典面试题 21 道【不可错过】
2018/09/21 Python
python快排算法详解
2019/03/04 Python
python使用 __init__初始化操作简单示例
2019/09/26 Python
python实现图片插入文字
2019/11/26 Python
简单介绍django提供的加密算法
2019/12/18 Python
Python3实现mysql连接和数据框的形成(实例代码)
2020/01/17 Python
TensorFlow梯度求解tf.gradients实例
2020/02/04 Python
Django接收照片储存文件的实例代码
2020/03/07 Python
Python+logging输出到屏幕将log日志写入文件
2020/11/11 Python
如何通过python检查文件是否被占用
2020/12/18 Python
利用纯CSS3实现tab选项卡切换示例代码
2016/09/21 HTML / CSS
英国珠宝网站Argento: PANDORA、Olivia Burton和Nomination等
2020/05/08 全球购物
项目开发计划书
2014/01/09 职场文书
省优秀教师事迹材料
2014/01/30 职场文书
优秀护士演讲稿
2014/04/30 职场文书
自主招生学校推荐信
2014/09/26 职场文书
自主招生学校推荐信范文
2015/03/26 职场文书
2015年收银员个人工作总结
2015/04/01 职场文书
2015年乡镇信访工作总结
2015/04/07 职场文书
开业庆典致辞
2015/08/01 职场文书