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中range()与xrange()用法分析
Sep 21 Python
Python简单实现控制电脑的方法
Jan 22 Python
Python读取excel指定列生成指定sql脚本的方法
Nov 28 Python
浅谈Scrapy网络爬虫框架的工作原理和数据采集
Feb 07 Python
浅谈python新式类和旧式类区别
Apr 26 Python
PyQt5实现从主窗口打开子窗口的方法
Jun 19 Python
DJANGO-URL反向解析REVERSE实例讲解
Oct 25 Python
如何利用Python动态模拟太阳系运转
Sep 04 Python
Python使用struct处理二进制(pack和unpack用法)
Nov 12 Python
如何用Django处理gzip数据流
Jan 29 Python
Django和Ueditor自定义存储上传文件的文件名
Feb 25 Python
Django模型层实现多表关系创建和多表操作
Jul 21 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递归函数中使用return的注意事项
2014/01/17 PHP
使用PHP把HTML生成PDF文件的几个开源项目介绍
2014/11/17 PHP
PHP jQuery+Ajax结合写批量删除功能
2017/05/19 PHP
Laravel 自带的Auth验证登录方法
2019/09/30 PHP
详解JavaScript语法对{}处理的坑爹之处
2014/06/05 Javascript
JS+CSS实现仿新浪微博搜索框的方法
2015/02/24 Javascript
Js 获取、判断浏览器版本信息的简单方法
2016/08/08 Javascript
浅谈javascript:两种注释,声明变量,定义函数
2016/10/05 Javascript
jQuery实现两个select控件的互移操作
2016/12/22 Javascript
使用javaScript实现鼠标拖拽事件
2020/04/03 Javascript
vue轮播图插件vue-concise-slider的使用
2018/03/13 Javascript
jQuery实现参数自定义的文字跑马灯效果
2018/08/15 jQuery
layui.tree组件的使用以及搜索节点功能的实现
2019/09/26 Javascript
uni-app微信小程序登录并使用vuex存储登录状态的思路详解
2019/11/04 Javascript
详解vue beforeEach 死循环问题解决方法
2020/02/25 Javascript
Python实现霍夫圆和椭圆变换代码详解
2018/01/12 Python
python 从csv读数据到mysql的实例
2018/06/21 Python
使用tensorflow实现线性回归
2018/09/08 Python
python实现基于信息增益的决策树归纳
2018/12/18 Python
Python3删除排序数组中重复项的方法分析
2019/01/31 Python
解决python中0x80072ee2错误的方法
2020/07/19 Python
python3.8动态人脸识别的实现示例
2020/09/21 Python
如何用Python提取10000份log中的产品信息
2021/01/14 Python
斯洛伐克家具和时尚装饰品购物网站:Butlers.sk
2019/09/08 全球购物
法国在线药房:DoctiPharma
2020/10/21 全球购物
高中生职业规划范文
2014/03/09 职场文书
洗发露广告词
2014/03/14 职场文书
学校门卫岗位职责
2014/03/16 职场文书
我爱读书演讲稿
2014/05/07 职场文书
廉洁教育学习材料
2014/05/19 职场文书
入职担保书范文
2014/05/21 职场文书
医生见习报告范文
2014/11/03 职场文书
政协委员个人总结
2015/03/03 职场文书
留学推荐信英文范文
2015/03/26 职场文书
openGauss数据库JDBC环境连接配置的详细过程(Eclipse)
2022/06/01 Java/Android
Nginx如何配置根据路径转发详解
2022/07/23 Servers