剪切图片的某个部分(2)

前言

上一篇博客--剪切图片的某个部分,发现一个巨大的问题

好像画矩形的时候,只能从左上角到右下角,其他地方开始的话,用PIL中Image的crop方法会报错

其中源码

        if box[2] < box[0]:
            raise ValueError("Coordinate 'right' is less than 'left'")
        elif box[3] < box[1]:
            raise ValueError("Coordinate 'lower' is less than 'upper'")

就是说,必须是要左上角和右下角的坐标。。。

正文

    def seek_place(self,path,window_name,show=False):
        a=seek_place(path=path,name=window_name,show=show).get_data()
# 可以参考上篇播客 ---剪切图片的某个部分
# (seek_place是一个类)  
        return a
# a 就是返回的数据data
    def crop_picture(self,path,rename,window_name='图片',show=False):
        """
        :param path: 图片的路径
        :param window_name: 窗口的名字
        :param rename: 剪切图片的名字(1.jpg)
        :param show: 是否展示得到的数据
        :return: self
        """
        data=self.seek_place(path,window_name,show=show)
# self.seek_place就是上面的方法,名字重复了,可以运行的(=.=)(=.=)(=.=)
        i = data[0][0]
        box = (min(i[0], i[2]), min(i[1], i[3]), max(i[0], i[2]), max(i[1], i[3]))
# 修改值,
        img=Image.open(path)
        img=img.crop(box)
        img.save(rename)
        return self
# 返回本身,为了链式调用

总结

不想演示了。可以运行

如果有其他bug再修改

你可能感兴趣的:(python)