假設我有一個原始圖像(灰色backgorund),黑色圓圈向右下方(不居中),並且從圓形的任何邊緣到邊緣的最小空間可以說是75px。我想修剪所有邊上的相同數量的空間,並且該空間應該是可能的最大空間,而不會裁剪圖像中的實際對象(圖像中洋紅色的區域)。很想聽聽如何解決這個問題。如何在ImageMagick中統一裁剪/裁剪圖像?
提前感謝!
假設我有一個原始圖像(灰色backgorund),黑色圓圈向右下方(不居中),並且從圓形的任何邊緣到邊緣的最小空間可以說是75px。我想修剪所有邊上的相同數量的空間,並且該空間應該是可能的最大空間,而不會裁剪圖像中的實際對象(圖像中洋紅色的區域)。很想聽聽如何解決這個問題。如何在ImageMagick中統一裁剪/裁剪圖像?
提前感謝!
如果我理解正確的問題,你想不基於minimum bounding rectangle裁剪圖像,但外邊框。
我會做這樣的事情..
鑑於我創建的圖像。
convert -size 200x200 xc:gray75 -fill black -draw 'circle 125 125 150 125' base.png
我將圖像拖放到二進制邊緣&修剪都記錄下來,以最小外接矩形。
convert base.png -canny 1x1 -trim mbr.png
這將產生mbr.png
圖像也將有原來的頁面信息。可以使用identify
實用程序提取頁面信息以計算外邊界矩形。
sX=$(identify -format '%W-(0 %X)-%w\n' mbr.png | bc)
sY=$(identify -format '%H-(0 %Y)-%h\n' mbr.png | bc)
最後用-shave
應用計算的結果又會回到原來的圖像上。
convert base.png -shave "${sX}x${sY}" out.png
我認爲要通過最小的水平或垂直距離修剪你的圖像(或ImageMagick的條款刮鬍子)到邊緣。如果是這樣的話,可以用這個襯墊完成:
convert circle.png -trim -set page "%[fx:page.width-min(page.width-page.x-w,page.height-page.y-h)*2]x%[fx:page.height-min(page.width-page.x-w,page.height-page.y-h)*2]+%[fx:page.x-min(page.width-page.x-w,page.height-page.y-h)]+%[fx:page.y-min(page.width-page.x-w,page.height-page.y-h)]" -background none -flatten output.png
這看起來很複雜,但實際上並不是這樣。首先修剪圖像。結果仍然會保存頁面幾何信息,包括原始寬度,高度和實際偏移量。有了這些信息,我可以使用ImageMagick FX expressions設置頁面幾何(正確的寬度&高度和新的偏移量)。最後,展平圖像將產生所需的輸出。
幹得好!你是否需要'-canny 1x1' - 我認爲它沒有改變。 –