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中使用pyhook实现键盘监控的例子
Jul 18 Python
Python中encode()方法的使用简介
May 18 Python
基于python实现微信模板消息
Dec 21 Python
菜鸟使用python实现正则检测密码合法性
Jan 05 Python
如何使用python爬取csdn博客访问量
Feb 14 Python
python简单实现获取当前时间
Aug 27 Python
在Python程序员面试中被问的最多的10道题
Dec 05 Python
python获取微信小程序手机号并绑定遇到的坑
Nov 19 Python
django 外键model的互相读取方法
Dec 15 Python
对python特殊函数 __call__()的使用详解
Jul 02 Python
pandas如何处理缺失值
Jul 31 Python
python如何通过闭包实现计算器的功能
Feb 22 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
PHP读取XML值的代码(推荐)
2011/01/01 PHP
php+Mysqli利用事务处理转账问题实例
2015/02/11 PHP
php获得文件大小和文件创建时间的方法
2015/03/13 PHP
详解PHP中curl_multi并发的实现
2020/06/08 PHP
jquery创建一个ajax关键词数据搜索实现思路
2013/02/26 Javascript
JS 退出系统并跳转到登录界面的实现代码
2013/06/29 Javascript
jquery validate在ie8下的bug解决方法
2013/11/13 Javascript
js加载读取内容及显示与隐藏div示例
2014/02/13 Javascript
一个不错的js html页面倒计时可精确到秒
2014/10/22 Javascript
JavaScript的RequireJS库入门指南
2015/07/01 Javascript
简单讲解jQuery中的子元素过滤选择器
2016/04/18 Javascript
jQuery EasyUi 验证功能实例解析
2017/01/06 Javascript
Bootstrap表单简单实现代码
2017/03/06 Javascript
Angular.js自动化测试之protractor详解
2017/07/07 Javascript
微信小程序图片选择区域裁剪实现方法
2017/12/02 Javascript
JavaScript寄生组合式继承实例详解
2018/01/06 Javascript
vue.js配合$.post从后台获取数据简单demo分享
2018/08/11 Javascript
微信小程序ibeacon三点定位详解
2018/10/31 Javascript
JS事件绑定的常用方式实例总结
2019/03/02 Javascript
selenium 反爬虫之跳过淘宝滑块验证功能的实现代码
2020/08/27 Javascript
解决vue-cli输入命令vue ui没效果的问题
2020/11/17 Javascript
[01:19:46]EG vs Secret 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
Django如何开发简单的查询接口详解
2019/05/17 Python
如何通过雪花算法用Python实现一个简单的发号器
2019/07/03 Python
Python urlencode和unquote函数使用实例解析
2020/03/31 Python
python 获取域名到期时间的方法步骤
2021/02/10 Python
HTML5 拖放(Drag 和 Drop)详解与实例代码
2017/09/14 HTML / CSS
英国在线自行车店:Merlin Cycles
2018/08/20 全球购物
大学应届毕业生个人求职信
2013/09/23 职场文书
给领导的检讨书
2014/02/16 职场文书
学校清明节活动总结
2014/07/04 职场文书
地理科学专业自荐信
2014/09/01 职场文书
群众路线剖析材料(四风)
2014/11/05 职场文书
辩论赛主持人开场白
2015/05/29 职场文书
学历证明范文
2015/06/16 职场文书
Redis 限流器
2022/05/15 Redis