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中给List添加元素的4种方法分享
Nov 28 Python
Python的Django框架中模板碎片缓存简介
Jul 24 Python
Python IDE PyCharm的基本快捷键和配置简介
Nov 04 Python
Python用Pillow(PIL)进行简单的图像操作方法
Jul 07 Python
python实现简易云音乐播放器
Jan 04 Python
详解Django admin高级用法
Nov 06 Python
python使用SQLAlchemy操作MySQL
Jan 02 Python
python数据预处理 :样本分布不均的解决(过采样和欠采样)
Feb 29 Python
详解python中groupby函数通俗易懂
May 14 Python
Django --Xadmin 判断登录者身份实例
Jul 03 Python
Python爬取数据并实现可视化代码解析
Aug 12 Python
Python自动化测试PO模型封装过程详解
Jun 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
第十四节--命名空间
2006/11/16 PHP
PHP仿博客园 个人博客(1) 数据库与界面设计
2013/07/05 PHP
PHP+MYSQL中文乱码问题
2015/07/01 PHP
php上传图片获取路径及给表单字段赋值的方法
2016/01/23 PHP
php 中phar包的使用教程详解
2018/10/26 PHP
基于jquery的表格排序
2010/09/11 Javascript
javascript 正则表达式相关应介绍
2012/11/27 Javascript
jQuery中获取checkbox选中项等操作及注意事项
2013/11/24 Javascript
javascript制作的网页侧边弹出框思路及实现代码
2014/05/21 Javascript
extjs每个组件要设置唯一的ID否则会出错
2014/06/15 Javascript
javascript实现滑动解锁功能
2014/12/31 Javascript
JavaScript中的toLocaleDateString()方法使用简介
2015/06/12 Javascript
基于JavaScript实现单选框下拉菜单添加文件效果
2016/06/26 Javascript
用js动态添加html元素,以及属性的简单实例
2016/07/19 Javascript
KnockoutJS 3.X API 第四章之表单submit、enable、disable绑定
2016/10/10 Javascript
详解Nodejs基于mongoose模块的增删改查的操作
2016/12/21 NodeJs
JavaScript自定义浏览器滚动条兼容IE、 火狐和chrome
2017/01/05 Javascript
JavaScript自动点击链接 防止绕过浏览器访问的方法
2017/01/19 Javascript
提升node.js中使用redis的性能遇到的问题及解决方法
2018/10/30 Javascript
详解JWT token心得与使用实例
2019/08/02 Javascript
微信小程序模板消息推送的两种实现方式
2019/08/27 Javascript
Python向MySQL批量插数据的实例讲解
2018/03/31 Python
python整小时 整天时间戳获取算法示例
2019/02/20 Python
python opencv 批量改变图片的尺寸大小的方法
2019/06/28 Python
python GUI库图形界面开发之PyQt5动态(可拖动控件大小)布局控件QSplitter详细使用方法与实例
2020/03/06 Python
python numpy实现多次循环读取文件 等间隔过滤数据示例
2020/03/14 Python
Python3标准库之dbm UNIX键-值数据库问题
2020/03/24 Python
Keras 在fit_generator训练方式中加入图像random_crop操作
2020/07/03 Python
佳能德国网上商店:Canon德国
2017/03/18 全球购物
教师个人的自我评价分享
2014/01/02 职场文书
关于晚自习早退的检讨书
2014/09/13 职场文书
单位收入证明范本
2015/06/18 职场文书
2016机关干部作风建设心得体会
2016/01/21 职场文书
《黄道婆》教学反思
2016/02/22 职场文书
golang判断key是否在map中的代码
2021/04/24 Golang
MySQL创建管理RANGE分区
2022/04/13 MySQL