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 tempfile模块学习笔记(临时文件)
May 25 Python
Python自动调用IE打开某个网站的方法
Jun 03 Python
python模块简介之有序字典(OrderedDict)
Dec 01 Python
解决pandas read_csv 读取中文列标题文件报错的问题
Jun 15 Python
python与caffe改变通道顺序的方法
Aug 04 Python
python实现淘宝秒杀脚本
Jun 23 Python
Python利用WMI实现ping命令的例子
Aug 14 Python
python实现布隆过滤器及原理解析
Dec 08 Python
TensorFlow实现保存训练模型为pd文件并恢复
Feb 06 Python
Python 实现将大图切片成小图,将小图组合成大图的例子
Mar 14 Python
Python实现进度条和时间预估的示例代码
Jun 02 Python
通过代码实例了解Python sys模块
Sep 14 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
德生PL990的分析评价
2021/03/02 无线电
PHP错误Allowed memory size of 67108864 bytes exhausted的3种解决办法
2014/07/28 PHP
PHP判断json格式是否正确的实现代码
2017/09/20 PHP
JS加ASP二级域名转向的代码
2007/05/17 Javascript
Javascript 日期处理之时区问题
2009/10/08 Javascript
JS window.opener返回父页面的应用
2009/10/24 Javascript
javascript处理表单示例(javascript提交表单)
2014/04/28 Javascript
使用原生js实现页面蒙灰(mask)效果示例代码
2014/06/20 Javascript
Javascript学习笔记之 对象篇(一) : 对象的使用和属性
2014/06/24 Javascript
jQuery回调函数的定义及用法实例
2014/12/23 Javascript
js面向对象之静态方法和静态属性实例分析
2015/01/10 Javascript
jQuery判断指定id的对象是否存在的方法
2015/05/22 Javascript
前端跨域的几种解决方式总结(推荐)
2017/08/16 Javascript
vue实现nav导航栏的方法
2017/12/13 Javascript
vuejs前后端数据交互之从后端请求数据的实例
2018/08/11 Javascript
详解关于JSON.parse()和JSON.stringify()的性能小测试
2019/03/14 Javascript
Vuex modules模式下mapState/mapMutations的操作实例
2019/10/17 Javascript
15分钟学会vue项目改造成SSR(小白教程)
2019/12/17 Javascript
vue中封装axios并实现api接口的统一管理
2020/12/25 Vue.js
Python使用minidom读写xml的方法
2015/06/03 Python
python实现字典(dict)和字符串(string)的相互转换方法
2017/03/01 Python
PyTorch的深度学习入门之PyTorch安装和配置
2019/06/27 Python
python线程池如何使用
2020/05/28 Python
pycharm激活方法到2099年(激活流程)
2020/09/22 Python
Html5移动端获奖无缝滚动动画实现示例
2018/06/25 HTML / CSS
Russell Stover巧克力官方网站:美国领先的精美巧克力制造商
2016/11/27 全球购物
台湾生鲜宅配:大口市集
2017/10/14 全球购物
Smashbox英国官网:美国知名彩妆品牌
2017/11/13 全球购物
YSL圣罗兰美妆俄罗斯官网:Yves Saint Lauret RU
2020/09/23 全球购物
会计专业毕业生自我评价
2013/09/25 职场文书
个人自查自纠材料
2014/10/14 职场文书
个人年终总结开头
2015/03/06 职场文书
中标通知书格式
2015/04/17 职场文书
党员转正党支部意见
2015/06/02 职场文书
紧急迫降观后感
2015/06/15 职场文书
2015年国庆节标语大全
2015/07/30 职场文书