python 3.6.5 pillow 实现图片的切割

python在图像处理方面基于PIL库具有非常强大的功能

不幸的是没有支持python3的PIL版本 幸运的是我们可以通过pillow实现图像处理

安装过程不多赘述:可以参考 Win7 64位下Python安装PIL图像处理库

上图一张用于切割:炮姐赛高!

python 3.6.5 pillow 实现图片的切割_第1张图片

废话不多说,切割炮姐(图片),上代码

"""
将一张图片均匀向下移动,向右移动,每移动一次,切割出一个固定面积的图片
算法思想:我们知道图片实际上是有一个二维数组组成的,所以先控制横坐标不变,纵坐标截取,一直到纵坐标的边界,然后向右移动横坐标,重复上一步操作
在这里我设置了三个不同的截取大小。读者可以运用选择结构以求实现程序更好的表现效果
"""
#python实现图片切割技术
from PIL import Image

#id标识图片 vx,vy为切成的图片大小
def cut(id,vx,vy):
	name1="D:/img/"+str(id)+'.jpg'
	print(name1)
	name2="D:/img/"+str(id)+"_block_"
	im=Image.open(name1)
	#偏移量
	dx=40
	dy=40
	n=1		#切割图片的片数
	x1=0
	y1=0
	x2=vx
	y2=vy
	print(im.size)    #输出图片的大小    
	w=im.size[0]	#将原图的宽赋值给w
	h=im.size[1]	#将原图的高赋值给h
	while x2<=w:
                #先纵向切割        
                while y2<=h:
			name3=name2+str(n)+".jpg"
			#crop() : 从图像中提取出某个矩形大小的图像。它接收一个四元素的元组作为参数,各元素为(left, upper, right, lower),坐标系统的原点(0, 0)是左上角。
			im2=im.crop((x1,y1,x2,y2))
			im2.save(name3)
			y1=y1+dy
			y2=y1+vy
			n=n+1	#更新n的值
		x1=x1+dx
		x2=x1+vx
		y1=0
		y2=vy
	print("图片切割成功,切割得到的子图片数为:")
	return n-1

if __name__=="__main__":
	id="pao"        #图片存储绝对路径为D:\img\pao.jpg
	#切割成图片的参数 长vx,宽vy
	#设置三种不同的切割大小 1.大
	res=cut(id,160,120)
	#2.中
	#res=cut(id,120,80)
	#3.小
	#res=cut(id,80,40)
	print(res)

运行该python程序:

可以看到程序运行成功,切割完成,我们打开存储切割图片的文件夹看一下效果

python 3.6.5 pillow 实现图片的切割_第2张图片

是不是很神奇~~~


                                                                                          ------我愿对世界温柔以待,望世界对我也温柔以待


你可能感兴趣的:(图形图像处理,python)