python如何制作缩略图

时间:2021-08-11 08:51:41

本文实例为大家分享了python制作缩略图的具体代码,供大家参考,具体内容如下

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
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如何制作缩略图

小编再分享一段代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#!/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))

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/Bopeiod/article/details/51816392