2016-09-29 75 views
0

我已經擁有一個完整的在白色背景的產品圖片的文件夾,並要求作出他們都是正方形,都圍繞產品的填充一致量。添加填充到一個圖像,使其方使用ImageMagick

我想,以避免調整圖像本身,所以我的計劃是裁剪圖像,添加填充使圖像廣場,然後將圖像添加邊框作爲最終圖像的百分比。

我一直沒能想出的唯一部分是如何做到的填充。我看過的所有圖像平方的例子都調整了圖像的大小。有沒有辦法找到最長的尺寸,並基於此調整大小?

例子: 我有以下圖片: enter image description here

我需要它看起來像這樣: enter image description here

我有ImageMagick的還沒有代碼(超出了簡單的裝飾和邊框命令) 。我們的想法是剪掉的空白,然後使圖像正方形,留在圖像的中心的產物(在這種情況下的矩形黑盒子)。最後,添加邊框以提供圖像填充。

+0

請給出一個形象的具體例子,它應該是怎樣的平方和填充 - 你也有什麼樣的代碼到目前爲止 –

+0

我添加了一個例子形象,我需要的輸出。 –

+0

所以你的裁剪圖像是629x157 - 正確嗎?你怎麼知道它應該變成758x758? –

回答

1

我覺得是這樣的:

#!/bin/bash 
# Get trim box w, h, x, y 
IFS=" x+" read w h x y < <(convert -fuzz 10% start.jpg -format "%@" info:) 

# Get longest side 
longest=$w 
[ $h -gt $longest ] && longest=$h 

# Increase by 20% 
longest=$(echo "scale=0;$longest*1.2/1" | bc) 
echo $longest 

convert -fuzz 10% start.jpg -trim -background white -gravity center -extent ${longest}x${longest} result.jpg 

如果您不熟悉「bash化」,您可以運行

convert -fuzz 10% start.jpg -format "%@" info: 

看到什麼第一個命令是做 - 它只是獲取修剪框而不實際修剪。試用以後,加入這一行:

echo $w, $h, $x, $y 
+0

謝謝,這看起來像它的作品。我會嘗試稍微調整一下,以便可以在圖像目錄上運行它。我在定義我的盤區大小時嘗試過fx:max(w,h),但這不起作用。我不知道爲什麼。 –

0

以Linux shell腳本:

for file in *\.png ; # or jpg,.... 
    do IMG_W=$(identify -ping -format '%w' $file); 
    IMG_H=$(identify -ping -format '%h' $file); 
## echo "$file: w: $IMG_W x h $IMG_H"; 
## do something like 
## DIN A5: 2331x3307 pixel 400 dpi 
## half the width of white border 
# XPLUS=$(echo " (2331 - $IMG_W)/2 " |bc) ; 
# YPLUS=250          
## 250 pixel from top border 
## echo "position: Xplus $XPLUS Yplus $YPLUS"; 
## according to the calculations combine with white picture (background) 
# composite -geometry +$XPLUS+$YPLUS $file white.png ../tmp7/$file; 
done 

的例子(comented出)向您展示如何計算,並用文件合併。我不知道從哪個源我得到了2線上面的腳本(這是我寫了一個腳本的一部分),我想從安東尼·蒂森在他優秀的網站「的ImageMagick用法示例」的。