本文实例为大家分享了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()
|
效果图:
小编再分享一段代码:
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