私のプログラムは、画像を取得して垂直方向にn個のセクションに分割し、セクションを個別のpngファイルとして保存することになっています。 2つのセクションでは、次のようになります。
今問題が発生しています。画像の前半が適切に保存され、後半を切り取ろうとすると次のエラーが発生します:SystemError: tile cannot extend outside image
私が扱っている画像には
トリミングするために計算される長方形は次のとおりです。
(0.0, 0, 590.0, 842)
-これは正しく動作します(590.0, 0, 590.0, 842)
-プログラムがクラッシュします私の質問は次のとおりです。なぜこのサブ四角形が範囲外であり、画像に示すように画像を適切に半分にスライスするようにそれを修正できますか?
from PIL import Image, ImageFilter
im = Image.open("image.png")
width, height = im.size
numberOfSplits = 2
splitDist = width / numberOfSplits #how many pixels each crop should be in width
print(width, height) #prints 1180, 842
for i in range(0, numberOfSplits):
x = splitDist * i
y = 0
w = splitDist
h = height
print(x, y, w, h)
#first run through prints 0.0, 0, 590.0, 842
#second run through prints 590.0, 0, 590.0, 842 then crashes
croppedImg = im.crop((x,y,w,h)) #crop the rectangle into my x,y,w,h
croppedImg.save("images\\new-img" + str(i) + ".png") #save to file
ボックスのすべての座標(x、y、w、h)は、画像の左上隅から測定されます。
したがって、ボックスの座標は(x、y、w + x、h + y)でなければなりません。コードに次の変更を加えます。
for i in range(0, numberOfSplits):
x = splitDist * i
y = 0
w = splitDist+x
h = height+y