Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用PIL裁剪图像?_Python_Python Imaging Library_Crop - Fatal编程技术网

Python 如何使用PIL裁剪图像?

Python 如何使用PIL裁剪图像?,python,python-imaging-library,crop,Python,Python Imaging Library,Crop,我想通过从给定图像中删除前30行和后30行来裁剪图像。我已经搜索过了,但没有得到确切的答案。有人有什么建议吗?有一种方法: 为此,您需要进口PIL(枕头)。 假设您有一个大小为1200、1600的图像。我们将从400400裁剪图像到800800 from PIL import Image img = Image.open("ImageName.jpg") area = (400, 400, 800, 800) cropped_img = img.crop(area) cropped_img.sh

我想通过从给定图像中删除前30行和后30行来裁剪图像。我已经搜索过了,但没有得到确切的答案。有人有什么建议吗?

有一种方法:

为此,您需要进口PIL(枕头)。 假设您有一个大小为1200、1600的图像。我们将从400400裁剪图像到800800

from PIL import Image
img = Image.open("ImageName.jpg")
area = (400, 400, 800, 800)
cropped_img = img.crop(area)
cropped_img.show()

一种更简单的方法是使用crop from。您可以输入要从每一侧裁剪的像素数

from PIL import ImageOps

border = (0, 30, 0, 30) # left, top, right, bottom
ImageOps.crop(img, border)
(左、上、右、下)表示两点

  • (左,上)
  • (右下)
  • 对于800x600像素的图像,图像的左上点为(0,0),右下点为(800600)

    因此,要将图像剪切一半:

    从PIL导入图像
    img=Image.open(“ImageName.jpg”)
    img_左_面积=(0,0,400,600)
    img_右_面积=(400,0,800,600)
    img_left=img.裁剪(img_left_区域)
    img_right=img.裁剪(img_right_区域)
    img_left.show()
    img_right.show()
    

    Python图像库使用笛卡尔像素坐标系,左上角为(0,0)。注意,坐标是指隐含的像素角点;被称为(0,0)的像素的中心实际上位于(0.5,0.5)


    坐标通常以2元组(x,y)的形式传递给库。矩形表示为4元组,首先给出左上角。例如,覆盖所有800x600像素图像的矩形写为(0,0,800,600)。

    是的,我知道im.crop(box)用于裁剪图像。但是我只想裁剪图像的上部和下部,而不是左侧和右侧,虽然box()需要4个元组,但我不知道如何裁剪图像的上部和下部。@TajKoyal:ninjagecko向您展示的正是如何裁剪顶部和底部。他正在为新图像指定一个矩形。您可以看到,他从顶部和底部的y值中删除了30个像素。如果以任何方式偏移x值,都会影响左右两侧。感谢大家的帮助。对于像我这样懒惰的人,
    Parameters:box–裁剪矩形,作为(左、上、右、下)元组。
    from PIL import ImageOps
    
    border = (0, 30, 0, 30) # left, top, right, bottom
    ImageOps.crop(img, border)