python如何制作缩略图


Posted in Python onApril 30, 2019

本文实例为大家分享了python制作缩略图的具体代码,供大家参考,具体内容如下

import cv2 #导入opencv模块
from tkinter import * #导入tkinter模块
from tkinter import ttk #tkinter最新的主题部件
from PIL import Image

#初始化模块
root = Tk()
root.title('Pt')
root.geometry('600x300')
#查找图片路径,成功则显示图片
def searchPicture():
 location = locOfPicture.get()
 img = cv2.imread(location)
 cv2.imshow("Image",img)

#生成缩略图
def setPicture():
 # 获取图片路径
 location = locOfPicture.get()
 # 对图片进行操作
 im = Image.open(location)
 im.thumbnail((int(heightOfPicture.get()),int(widthOfPicture.get())))
 im.save(nameOfImg.get(),'JPEG')


label1 = ttk.Label(root,text='选择图片')
label2 = ttk.Label(root,text='长:')
label3 = ttk.Label(root,text='宽:')
label4 = ttk.Label(root,text='文件名')

#存储输入框中输入的变量
locOfPicture = StringVar()
heightOfPicture= StringVar()
widthOfPicture = StringVar()
nameOfImg = StringVar()

entry1 = ttk.Entry(root,textvariable = locOfPicture,width=50)
entry2 = ttk.Entry(root,textvariable=heightOfPicture,width=10)
entry3 = ttk.Entry(root,textvariable=widthOfPicture,width=10)
entry4 = ttk.Entry(root,textvariable=nameOfImg,width=25)

button1 = ttk.Button(root,text='确定',command=searchPicture)
button2 = ttk.Button(root,text='确定生成',command=setPicture)

#进行界面布局
label1.grid(column=0,row=0)
entry1.grid(column=1,row=0,columnspan=3)
button1.grid(column=4,row=0)
label2.grid(column=0,row=1)
entry2.grid(column=1,row=1)
label3.grid(column=2,row=1)
entry3.grid(column=3,row=1)
entry4.grid(column=1,row=2,columnspan=2)
button2.grid(column=3,row=2)

root.mainloop()

效果图:

python如何制作缩略图

小编再分享一段代码:

#!/usr/bin/env python
#coding=utf-8
'''
Created on 2012-6-2
 
@author: fatkun
'''
import Image
import os
import sys
import glob
import time
 
def make_thumb(path, thumb_path, size):
 """生成缩略图"""
 img = Image.open(path)
 width, height = img.size
 # 裁剪图片成正方形
 if width > height:
  delta = (width - height) / 2
  box = (delta, 0, width - delta, height)
  region = img.crop(box)
 elif height > width:
  delta = (height - width) / 2
  box = (0, delta, width, height - delta)
  region = img.crop(box)
 else:
  region = img
 
 # 缩放
 thumb = region.resize((size, size), Image.ANTIALIAS)
 
 base, ext = os.path.splitext(os.path.basename(path))
 filename = os.path.join(thumb_path, '%s_thumb.jpg' % (base,))
 print filename
 # 保存
 thumb.save(filename, quality=70)
 
def merge_thumb(files, output_file):
 """合并图片"""
 imgs = []
 width = 0
 height = 0
 
 # 计算总宽度和长度
 for file in files:
  img = Image.open(file)
  if img.mode != 'RGB':
   img = img.convert('RGB')
  imgs.append(img)
  if img.size[0] > width:
   width = img.size[0]
  height += img.size[1]
 
 # 新建一个白色底的图片
 merge_img = Image.new('RGB', (width, height), 0xffffff)
 cur_height = 0
 for img in imgs:
  # 把图片粘贴上去
  merge_img.paste(img, (0, cur_height))
  cur_height += img.size[1]
 
 merge_img.save(output_file, quality=70)
 
if __name__ == '__main__':
 ROOT_PATH = os.path.abspath(os.path.dirname(__file__))
 IMG_PATH = os.path.join(ROOT_PATH, 'img')
 THUMB_PATH = os.path.join(IMG_PATH, 'thumbs')
 if not os.path.exists(THUMB_PATH):
  os.makedirs(THUMB_PATH)
 
 # 生成缩略图
 files = glob.glob(os.path.join(IMG_PATH, '*.jpg'))
 begin_time = time.clock()
 for file in files:
  make_thumb(file, THUMB_PATH, 90)
 end_time = time.clock()
 print ('make_thumb time:%s' % str(end_time - begin_time))
 
 # 合并图片
 files = glob.glob(os.path.join(THUMB_PATH, '*_thumb.jpg'))
 merge_output = os.path.join(THUMB_PATH, 'thumbs.jpg')
 begin_time = time.clock()
 merge_thumb(files, merge_output)
 end_time = time.clock()
 print ('merge_thumb time:%s' % str(end_time - begin_time))

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python进阶教程之循环对象
Aug 30 Python
python字符串编码识别模块chardet简单应用
Jun 15 Python
Python简单检测文本类型的2种方法【基于文件头及cchardet库】
Sep 18 Python
python+selenium开发环境搭建图文教程
Aug 11 Python
numpy matrix和array的乘和加实例
Jun 28 Python
完美解决python中ndarray 默认用科学计数法显示的问题
Jul 14 Python
在python中实现对list求和及求积
Nov 14 Python
Python 中包/模块的 `import` 操作代码
Apr 22 Python
基于Numpy.convolve使用Python实现滑动平均滤波的思路详解
May 16 Python
Python networkx包的实现
Feb 14 Python
Django 解决阿里云部署同步数据库报错的问题
May 14 Python
Django利用elasticsearch(搜索引擎)实现搜索功能
Nov 26 Python
Python3.5装饰器原理及应用实例详解
Apr 30 #Python
11个Python Pandas小技巧让你的工作更高效(附代码实例)
Apr 30 #Python
python制作图片缩略图
Apr 30 #Python
python获取微信企业号打卡数据并生成windows计划任务
Apr 30 #Python
使用Python实现企业微信的自动打卡功能
Apr 30 #Python
Python/Django后端使用PIL Image生成头像缩略图
Apr 30 #Python
Python3.5迭代器与生成器用法实例分析
Apr 30 #Python
You might like
使用 php4 加速 web 传输
2006/10/09 PHP
收集的php编写大型网站问题集
2007/03/06 PHP
php数据库密码的找回的步骤
2011/01/12 PHP
php为字符串前后添加指定数量字符的方法
2015/05/04 PHP
Swoole-1.7.22 版本已发布,修复PHP7相关问题
2015/12/31 PHP
php封装的图片(缩略图)处理类完整实例
2016/10/19 PHP
php版微信小店调用api示例代码
2016/11/12 PHP
基于php双引号中访问数组元素报错的解决方法
2018/02/01 PHP
BOOTSTRAP时间控件显示在模态框下面的bug修复
2015/02/05 Javascript
基于jQuery.Hz2Py.js插件实现的汉字转拼音特效
2015/05/07 Javascript
理解javascript中的严格模式
2016/02/01 Javascript
js实现不重复导入的方法
2016/03/02 Javascript
深入分析javascript中console命令
2016/08/14 Javascript
轻松实现js选项卡切换效果
2016/09/24 Javascript
彻底学会Angular.js中的transclusion
2017/03/12 Javascript
React如何解决fetch跨域请求时session失效问题
2018/11/02 Javascript
微信小程序实现时间预约功能
2018/11/27 Javascript
async/await优雅的错误处理方法总结
2019/01/30 Javascript
微信小程序分享功能onShareAppMessage(options)用法分析
2019/04/24 Javascript
详解jQuery中的prop()使用方法
2020/01/05 jQuery
JS 创建对象的模式实例小结
2020/04/28 Javascript
Vue使用路由钩子拦截器beforeEach和afterEach监听路由
2020/11/16 Javascript
Python命令行参数解析模块getopt使用实例
2015/04/13 Python
python实现控制COM口的示例
2019/07/03 Python
python使用matplotlib绘制雷达图
2019/10/18 Python
Python发送手机动态验证码代码实例
2020/02/28 Python
Python常用数据分析模块原理解析
2020/07/20 Python
CSS3实现莲花绽放的动画效果
2020/11/06 HTML / CSS
美国一家专业的太阳镜网上零售商:Solstice太阳镜
2016/07/25 全球购物
Fossil美国官网:化石手表、手袋、首饰及配饰
2019/02/17 全球购物
西班牙最大的婴儿用品网上商店:Bebitus
2019/05/30 全球购物
Notino瑞典:购买香水和美容产品
2019/07/26 全球购物
实现向右循环移位
2014/07/31 面试题
妇产医师自荐信
2014/01/29 职场文书
市级优秀班主任事迹材料
2014/05/13 职场文书
个人授权委托书样本
2014/09/13 职场文书