python做图像处理程序_从零开始的图片处理程序python实现

前言

最近搭建了博客,现在把以前做过的小东西做个记录放上来-。

这是一个图片处理小程序,我个人还是用的比较顺手的,毕竟学生党么,经常要交各种不同类型,尺寸的照片。申请一些东西也经常会用到。

正文

依赖库

PIL

matplotlib

tkinter(可选)

实现功能

单张图片按输入大小缩放,按给定角度旋转,改变格式

批量图片按比例缩放,按输入大小缩放,改变格式

实现图形用户界面(使用tkinter)

程序实现

首先引入依赖库,这些应该是我们常用的,应该不会陌生。

from PIL import Image

import matplotlib.pyplot as plt

from os import listdir

from os.path import isfile, join

之后编写我们的single_test函数

def single_test():

img=input('原始图片:')

img = Image.open(img)

print('原始照片尺寸为: ',img.size)

print('格式为: ',img.format)

print('如果你想改变图片大小请输入1,想旋转图片请输入2')

num = input('输出你的决定:')

while(num):

if int(num)==1:

w=input('你想转变的宽度:')

h=input('你想转变的高度:')

name=input('新图片的名称')

new_img= img.resize((int(w), int(h)),Image.ANTIALIAS)

new_img.save(name)

plt.figure('resize')

plt.subplot(121)

plt.title('before resize')

plt.imshow(img)

plt.subplot(122)

plt.title('after resize')

plt.imshow(new_img)

plt.show()

break

elif int(num)==2:

jiaodu=input('旋转的角度:')

new_img = img.rotate(int(jiaodu))

plt.figure('rotate')

name = input('新图片的名称')

new_img.save(name)

plt.subplot(121)

plt.title('before rotate ')

plt.imshow(img)

plt.subplot(122)

plt.title('after rotate')

plt.imshow(new_img)

plt.show()

break

else:

print('输错了,请重新输入\n')

num = input('输出你的决定:')

然后的批量处理函数大同小异

def batch_test():

path=input('输入图片的地址:')

name = [f for f in listdir(path) if isfile(join(path, f))]

fname=[join(path, f) for f in name]

print('如果你想按比例改变图片大小请输入1,按固定大小请输入2,想改变图片的格式请输入3')

num=input('你的决定:')

while(num):

if int(num)==1:

k1 = input('输入宽的缩放比例')

k2= input('输入高的缩放比例')

for pic in fname:

img = Image.open(pic)

(x, y) = img.size

new_img = img.resize((int(x*float(k1)), int(y*float(k1))),Image.ANTIALIAS)

pic_name=join(path,'new1_'+name[fname.index(pic)])

new_img.save(pic_name)

break

elif int(num)==2:

w = input('输入宽')

h= input('输入高')

for pic in fname:

img = Image.open(pic)

(x, y) = img.size

new_img = img.resize((int(w), int(h)),Image.ANTIALIAS)

pic_name=join(path,'new2_'+name[fname.index(pic)])

new_img.save(pic_name)

break

elif int(num) == 3:

geshi=input('请输入你想要改变到的格式')

for pic in fname:

img = Image.open(pic)

pic_name=join(path,'new3_'+name[fname.index(pic)].split('.')[0]+'.'+str(geshi))

img.save(pic_name)

break

else:

print('输错了,请重新输入\n')

num = input('你的决定:')

最后便是主函数编写

if __name__=="__main__":

yournum=int(input('___________1.single test__________\n___________2.batch test___________\n请选择'))

while (yournum):

if int(yournum)==1:

single_test()

print('任务完成了,快去查看吧')

break

elif int(yournum)==2:

batch_test()

print('任务完成了,快去查看吧')

break

else:

print('重新输入\n')

yournum = int(input('___________1.single test__________\n___________2.batch test___________\n请选择'))

以单张图片测试结果如下

4ad99c976f60

tup.png

如上图,成功改变了图片的大小

4ad99c976f60

gm.png

如上图,同时旋转了图片90度,也改变了图片格式

写在后面

由于文中所用的库都比较常用,所以不做介绍,至于前文所说的图形界面程序主要在于tkinter的使用,其他思想方面基本一致。

所以详情请见https://github.com/haoxinl/pic_deal

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值