2017-07-19 111 views
1

我已經做了幾乎所有事情,但我面臨着一個問題。我在多個位置創建多個水印。這是運行良好,但實際問題是當圖像具有良好的分辨率和水印看起來非常小。我想要的任何圖像分辨率水印應該是變焦和可見這裏是我的exec函數,我使用laravel框架,我使用imagick庫如何根據圖像調整水印?

$path = storage_path('app/images/TestImages/'); 
$mediumFileName = $path.str_random(4)."medium".str_random(4).".".$ext; 
$watermarkImage = storage_path('watermark.png'); 
$saveWatermark = $path."image_watermark.jpg"; 
exec("convert $mediumFileName \($watermarkImage -write MPR:wm \) \ 
-define compose:args=30,100 -compose dissolve   \ 
     -gravity NorthWest -geometry +3+3 -composite  \ 
MPR:wm -gravity NorthEast -geometry +3+3 -composite  \ 
MPR:wm -gravity SouthEast -geometry +3+3 -composite  \ 
MPR:wm -gravity Center -geometry +3+3 -composite  \ 
MPR:wm -gravity SouthWest -geometry +3+3 -composite $saveWatermark"); 
+0

檢查水印和圖像的大小,然後添加相同的。您可以針對不同的圖像尺寸使用不同的水印圖像尺寸。 – informer

+0

圖像由用戶添加..所以它可以是任何尺寸 –

+0

水印尺寸是143 * 63 @informer –

回答

4

這是一個很大的水印,對於任何圖片都有足夠的分辨率,因爲它是1,000像素的正方形。現在

enter image description here

,如果我們有這樣的1000x800像素的圖片,我們可以調整水印合成之前說的是15%(1000 15%是在代碼150):

convert image.jpg \(watermark.png -resize 150x -write MPR:wm \) \ 
      -gravity northwest -geometry +10+10 -composite   \ 
    MPR:wm -gravity northeast -geometry +10+10 -composite   \ 
    MPR:wm -gravity southwest -geometry +10+10 -composite   \ 
    MPR:wm -gravity southeast -geometry +10+10 -composite result.png 

enter image description here

enter image description here

但是,如果我們有這樣一個400×300像小我法師:

enter image description here

當我們應用水印,我們首先將其調整爲15%的400,或60:

convert image.jpg \(watermark.png -resize 60x -write MPR:wm \) \ 
      -gravity northwest -geometry +10+10 -composite   \ 
    MPR:wm -gravity northeast -geometry +10+10 -composite   \ 
    MPR:wm -gravity southwest -geometry +10+10 -composite   \ 
    MPR:wm -gravity southeast -geometry +10+10 -composite result.png 

enter image description here

所以,你需要得到大小安德烈亞斯如何向你示好:

list($width, $height, $type, $attr) = getimagesize($mediumFileName); 

,然後乘以0.15(得到15%)並在-resize參數中使用。


如果「除了處理」以上括號內爲不安或混亂,可以實現通過加載起來,第一調整水印,對自己,把它變成一個MPR,然後同樣的結果加載主圖像並重疊四次MPR。這只是一個不同的,也許更簡單的語法:

convert watermark.png -resize 60x -write MPR:wm +delete image.jpg \ 
    MPR:wm -gravity northwest -geometry +10+10 -composite   \ 
    MPR:wm -gravity northeast -geometry +10+10 -composite   \ 
    MPR:wm -gravity southwest -geometry +10+10 -composite   \ 
    MPR:wm -gravity southeast -geometry +10+10 -composite result.png 
+0

謝謝@Mark Setchell我很高興你幫我:) –

+0

我的榮幸 - 祝你的項目順利! –

+0

非常感謝:) –

1

使用IMAGESIZE並獲得圖像的大小。
選擇一個正確大小的水印並添加到圖片。

$path = storage_path('app/images/TestImages/'); 
$mediumFileName = $path.str_random(4)."medium".str_random(4).".".$ext; 
$watermarkImage = storage_path('watermark.png'); 

list($width, $height, $type, $attr) = getimagesize($mediumFileName); 

if ($height * $width < some Mpx){ 
    $watermarkImage = storage_path('watermarkSMALL.png'); 
} elseif($height*$width >some larger Mpx) 
    $watermarkImage = storage_path('watermarkLARGE.png'); 
} 

exec("convert 
$mediumFileName \( 
$watermarkImage -write  MPR:wm \) \ 
-define compose:args=30,100 -compose dissolve   \ 
    -gravity NorthWest -geometry +3+3 -composite  \ 
MPR:wm -gravity NorthEast -geometry +3+3 -composite  \ 
MPR:wm -gravity SouthEast -geometry +3+3 -composite  \ 
MPR:wm -gravity Center -geometry +3+3 -composite  \ 
MPR:wm -gravity SouthWest -geometry +3+3 -composite $saveWatermark"); 
+1

謝謝克里斯! – Andreas

+0

爲什麼你乘以高度和寬度? –

+0

獲得Mpix。這是描述圖片尺寸或相機「質量」的常用方式 – Andreas

相關問題