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+Django在windows下的开发环境配置图解
Nov 11 Python
复习Python中的字符串知识点
Apr 14 Python
Python用threading实现多线程详解
Feb 03 Python
ubuntu环境下python虚拟环境的安装过程
Jan 07 Python
Python利用splinter实现浏览器自动化操作方法
May 11 Python
Linux下python3.7.0安装教程
Jul 30 Python
python实现决策树分类
Aug 30 Python
用Python和WordCloud绘制词云的实现方法(内附让字体清晰的秘笈)
Jan 08 Python
Tensorflow轻松实现XOR运算的方式
Feb 03 Python
Python3标准库之functools管理函数的工具详解
Feb 27 Python
在Ubuntu 20.04中安装Pycharm 2020.1的图文教程
Apr 30 Python
Django form表单与请求的生命周期步骤详解
Jun 07 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
咖啡知识 咖啡养豆要养多久 排气又是什么
2021/03/06 新手入门
来自PHP.NET的入门教程
2006/10/09 PHP
php递归删除目录下的文件但保留的实例分享
2014/05/10 PHP
php ucwords() 函数将字符串中每个单词的首字符转换为大写(实现代码)
2016/05/12 PHP
phpMyAdmin无法登陆的解决方法
2017/04/27 PHP
JavaScript入门教程(6) Window窗口对象
2009/01/31 Javascript
js控制的遮罩层实例介绍
2013/05/29 Javascript
javascript 寻找错误方法整理
2014/06/15 Javascript
更快的异步执行(setTimeout多浏览器)
2014/08/12 Javascript
解决jQuery uploadify在非IE核心浏览器下无法上传
2015/08/05 Javascript
JavaScript人脸识别技术及脸部识别JavaScript类库Tracking.js
2015/09/14 Javascript
Bootstrap基本组件学习笔记之面板(14)
2016/12/08 Javascript
Ionic+AngularJS实现登录和注册带验证功能
2017/02/09 Javascript
使用Require.js封装原生js轮播图的实现代码
2017/06/15 Javascript
详谈JS中数组的迭代方法和归并方法
2017/08/11 Javascript
通过vue-cli来学习修改Webpack多环境配置和发布问题
2017/12/22 Javascript
vue中的计算属性实例详解
2018/09/19 Javascript
apicloud拉起小程序并传递参数的方法示例
2018/11/21 Javascript
微信小程序云开发使用方法新手初体验
2019/05/16 Javascript
jquery实现垂直无限轮播的方法分析
2019/07/16 jQuery
node.js使用http模块创建服务器和客户端完整示例
2020/02/10 Javascript
Python正则表达式使用经典实例
2016/06/21 Python
详解MySQL数据类型int(M)中M的含义
2016/11/20 Python
深入理解Python3中的http.client模块
2017/03/29 Python
使用Turtle画正螺旋线的方法
2017/09/22 Python
django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t exist”)问题的解决
2018/07/13 Python
python 模拟创建seafile 目录操作示例
2019/09/26 Python
Pandas时间序列重采样(resample)方法中closed、label的作用详解
2019/12/10 Python
Python实现图像去噪方式(中值去噪和均值去噪)
2019/12/18 Python
python多线程实现代码(模拟银行服务操作流程)
2020/01/13 Python
python连接打印机实现打印文档、图片、pdf文件等功能
2020/02/07 Python
加拿大领先的牛仔零售商:Bluenotes
2018/01/22 全球购物
谢师宴邀请函
2015/02/02 职场文书
体育个人工作总结
2015/02/09 职场文书
基于Python实现将列表数据生成折线图
2022/03/23 Python
HTML中link标签属性的具体用法
2023/05/07 HTML / CSS