由于这些格子大小均匀,所以可以使用常规的除法,先裁剪出第一个格子:
e=a[:,:,0].shape
f=a[0:int(e[0]/9),0:int(e[1]/9)]
io.imsave('00.png',f)
下图是等比例放大的效果图。
第一列第二个格子:
m=1
n=0
f=a[int(m*e[0]/9):int((m+1)*e[0]/9),int(n*e[1]/9):int((n+1)*e[1]/9)]
第一行第二个格子:
m=0
n=1
f=a[int(m*e[0]/9):int((m+1)*e[0]/9),int(n*e[1]/9):int((n+1)*e[1]/9)]
这样,用for循环,可以实现全部裁剪:
for m in range(9):
for n in range(9):
f=a[int(m*e[0]/9):int((m+1)*e[0]/9),int(n*e[1]/9):int((n+1)*e[1]/9)]
io.imsave('0/'+str(m)+'-'+str(n)+'.png',f)
去除边界的黑框,只保留数字或空白:
for m in range(9):
for n in range(9):
f=a[int(m*e[0]/9)+10:int((m+1)*e[0]/9)-10,int(n*e[1]/9)+10:int((n+1)*e[1]/9)-10]
io.imsave('0/'+str(m)+'-'+str(n)+'.png',f)
当然可以。先根据字符的长度,将字符分成N个组,每组一个字符。
然后根据电脑显示器的大小,创建一个图片框,高度和长度分别设置为电脑显示器的25%。
再将字符显示到图片框中,保存图片框的内容为图片文件即可。
# -*- coding: gbk -*-import Image
import ImageDraw
import ImageChops
im = Image.new('RGB', (800, 600), 'white')
im2 = Image.open('test.png')
#测试图放画布左边,画布右边底色涂黄
left = (im.size[0]/2 - im2.size[0])/2
upper = (im.size[1] - im2.size[1])/2
im.paste(im2, (left, upper))
im.paste('yellow', (im.size[0]/2, 0) + im.size)
im.show()
#因要旋转得计算测试图对角线,然后切出
d = int((im2.size[0]**2 +im2.size[1]**2)**0.5)
left = (im.size[0]/2-d)/2
upper = (im.size[1]-d)/2
bbox = (left, upper, left+d, upper+d)
cp = im.crop(bbox)
#图底不是黑先做mask再作旋转,
#mask做法不一,按测试图可选取g或b通道
r, g, b = cp.split()
mask = g.point(lambda i: i < 250 and 255)
angle = 30
mask = mask.rotate(angle)
cp = cp.rotate(angle)
#利用mask贴在画布右边黄底区内
im.paste(cp, (left+im.size[0]/2, upper), mask)
im.show()