简单图像框算术
项目描述
此项目提供了图像裁剪/调整大小算法,用于链式多个调整大小、裁剪操作,并生成一个结果裁剪/调整大小操作对。
使用方法
使用方法相当简单
from boxmath import box, resize, crop, size, make_transformer
from wand import image
# Load the image to get its width and height
i = image.Image(filename="chrysanthemum.jpg")
b = box(i.width, i.height)
# manipulate the virtual image
b = resize(b, 629, 483)
b = crop(b, 0, 0, 480, 480)
b = resize(b, 1000, 1000)
# render
def resizer(img, w, h):
img.resize(int(w), int(h), filter=FILTER)
return img
def cropper(img, l,t,r,b):
img.crop(int(l),int(t),int(r),int(b))
return img
t = make_transformer(b, resizer, cropper)
i = t(i)
i.save(filename="chrysanthemum-1000x1000.jpg")
通常,如果我们直接使用wand或PIL,每次调整大小都会降低图像质量。先缩小再放大的操作会破坏图像质量;利用数学的力量,我们只有在需要渲染图像时才应用调整大小和裁剪。
请注意,传递给调整大小和裁剪函数的宽度、高度、左、上、右和下值被转换为整数。
这是因为它们要么是fractions.Fraction()实例,要么是int()。boxmath使用Fraction类确保在调整大小和裁剪时的精度。