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计算程序开始到程序结束的运行时间和程序运行的CPU时间
Nov 28 Python
Python获取当前时间的方法
Jan 14 Python
python安装mysql-python简明笔记(ubuntu环境)
Jun 25 Python
python实现SOM算法
Feb 23 Python
Python闭包执行时值的传递方式实例分析
Jun 04 Python
钉钉群自定义机器人消息Python封装的实例
Feb 20 Python
Python两个字典键同值相加的几种方法
Mar 05 Python
Pythony运维入门之Socket网络编程详解
Apr 15 Python
python async with和async for的使用
Jun 20 Python
python2与python3爬虫中get与post对比解析
Sep 18 Python
超级实用的8个Python列表技巧
Aug 24 Python
解决python 在for循环并且pop数组的时候会跳过某些元素的问题
Dec 11 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中文编码小技巧
2014/12/25 PHP
在Yii2中使用Pjax导致Yii2内联脚本载入失败的原因分析
2016/03/06 PHP
Yii2-GridView 中让关联字段带搜索和排序功能示例
2017/01/21 PHP
用apply让javascript函数仅执行一次的代码
2010/06/27 Javascript
jQuery实现的感应鼠标悬停图片色彩渐显效果
2015/03/03 Javascript
Javascript实现检测客户端类型代码封包
2015/12/03 Javascript
jQuery的deferred对象使用详解
2016/09/25 Javascript
JS实现复制内容到剪贴板功能
2017/02/05 Javascript
webpack配置文件和常用配置项介绍
2017/04/28 Javascript
Angular 通过注入 $location 获取与修改当前页面URL的实例
2017/05/31 Javascript
jQuery中.attr()和.data()的区别分析
2017/09/03 jQuery
解决iView中时间控件选择的时间总是少一天的问题
2018/03/15 Javascript
解决vue动态为数据添加新属性遇到的问题
2018/09/18 Javascript
JavaScript图像放大镜效果实现方法详解
2020/06/28 Javascript
在Vuex中Mutations修改状态操作
2020/07/24 Javascript
Vue仿百度搜索功能
2020/12/28 Vue.js
python 判断自定义对象类型
2009/03/21 Python
python通过imaplib模块读取gmail里邮件的方法
2015/05/08 Python
Python使用xlrd模块操作Excel数据导入的方法
2015/05/26 Python
django使用xlwt导出excel文件实例代码
2018/02/06 Python
python提取图像的名字*.jpg到txt文本的方法
2018/05/10 Python
Python中staticmethod和classmethod的作用与区别
2018/10/11 Python
Django unittest 设置跳过某些case的方法
2018/12/26 Python
Python字符串、列表、元组、字典、集合的补充实例详解
2019/12/20 Python
Python内置函数property()如何使用
2020/09/01 Python
纯CSS实现聊天框小尖角、气泡效果
2014/04/04 HTML / CSS
html5拍照功能实现代码(htm5上传文件)
2013/12/11 HTML / CSS
车队司机自我鉴定
2014/03/02 职场文书
终止解除劳动合同证明书
2015/06/17 职场文书
少先队中队工作总结2015
2015/07/23 职场文书
企业安全生产检查制度
2015/08/06 职场文书
担保书格式范文
2015/09/22 职场文书
假如给我三天光明:舟逆水而行,人遇挫而达 
2019/10/29 职场文书
如何利用python和DOS获取wifi密码
2021/03/31 Python
使用GO语言实现Mysql数据库CURD的简单示例
2021/08/07 Golang
浅谈MySql整型索引和字符串索引失效或隐式转换问题
2021/11/20 MySQL