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使用循环实现批量创建文件夹示例
Mar 25 Python
python爬虫入门教程--HTML文本的解析库BeautifulSoup(四)
May 25 Python
python命令行解析之parse_known_args()函数和parse_args()使用区别介绍
Jan 24 Python
用python与文件进行交互的方法
Mar 01 Python
python+POP3实现批量下载邮件附件
Jun 19 Python
关于python2 csv写入空白行的问题
Jun 22 Python
3分钟学会一个Python小技巧
Nov 23 Python
python实现简单多人聊天室
Dec 11 Python
python的schedule定时任务模块二次封装方法
Feb 19 Python
python sitk.show()与imageJ结合使用常见的问题
Apr 20 Python
解决python 执行shell命令无法获取返回值的问题
Dec 05 Python
Anaconda安装pytorch和paddle的方法步骤
Apr 03 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实现将GB编码转换为UTF8
2006/11/25 PHP
php缓存技术介绍
2006/11/25 PHP
JQuery 学习笔记 element属性控制
2009/07/23 Javascript
Javascript中的方法和匿名方法实例详解
2015/06/13 Javascript
jQuery垂直多级导航菜单代码分享
2015/08/18 Javascript
jQuery制作图片旋转效果
2017/02/02 Javascript
VueJS事件处理器v-on的使用方法
2017/09/27 Javascript
从零开始学习搭建React脚手架项目
2018/08/23 Javascript
node实现socket链接与GPRS进行通信的方法
2019/05/20 Javascript
微信小程序模板消息限制实现无限制主动推送的示例代码
2019/08/27 Javascript
Js实现复选框的全选、全不选反选功能代码实例
2020/02/28 Javascript
vue项目打包后提交到git上为什么没有dist这个文件的解决方法
2020/09/16 Javascript
[01:16:16]DOTA2-DPC中国联赛定级赛 RNG vs Phoenix BO3第二场 1月8日
2021/03/11 DOTA
在Python中使用itertools模块中的组合函数的教程
2015/04/13 Python
深入浅析python继承问题
2016/05/29 Python
好用的Python编辑器WingIDE的使用经验总结
2016/08/31 Python
PyQt5每天必学之切换按钮
2020/08/20 Python
Python基本数据结构之字典类型dict用法分析
2019/06/08 Python
python 表格打印代码实例解析
2019/10/12 Python
python实现七段数码管和倒计时效果
2019/11/23 Python
Python Flask框架实现简单加法工具过程解析
2020/06/03 Python
Python selenium如何打包静态网页并下载
2020/08/12 Python
python logging模块的使用
2020/09/07 Python
荷兰演唱会和体育比赛订票网站:viagogo荷兰
2018/04/08 全球购物
咖啡店自主创业商业计划书
2014/01/22 职场文书
办公室岗位职责
2014/02/12 职场文书
《挑山工》的教学反思
2014/02/16 职场文书
竞选团支书演讲稿
2014/04/28 职场文书
2014年学校安全工作总结
2014/11/13 职场文书
2014年禁毒工作总结
2014/11/24 职场文书
欢送领导祝酒词
2015/08/12 职场文书
2016年清明节网上祭英烈活动总结
2016/04/01 职场文书
nginx实现动静分离的方法示例
2021/11/07 Servers
Python内置数据类型中的集合详解
2022/03/18 Python
在vue中import()语法不能传入变量的问题及解决
2022/04/01 Vue.js
JS中forEach()、map()、every()、some()和filter()的用法
2022/05/11 Javascript