PHPFixing
  • Privacy Policy
  • TOS
  • Ask Question
  • Contact Us
  • Home
  • PHP
  • Programming
  • SQL Injection
  • Web3.0

Monday, September 19, 2022

[FIXED] How to adjust watermark according to image?

 September 19, 2022     imagemagick, imagemagick-convert, imagick, laravel, php     No comments   

Issue

I have done almost everything but i am facing one issue. I am creating multiple watermark at multiple locations. That is running fine but actually problem is when the image is having good resolution and watermark is looking very small. I want whatever the image resolution watermark should be zoom and visible here is my exec function and i am using laravel framework and i am using imagick library

$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");

Solution

Here is a large watermark, with enough resolution for any picture as it is 1,000 pixels square.

enter image description here

Now, if we have a 1000x800 pixel image like this, we can resize the watermark to say 15% of that before compositing it (15% of 1000 is the 150 in the code):

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

But, if we have a smaller image like this 400x300 image:

enter image description here

when we apply the watermark, we first resize it to 15% of 400, or 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

So, you need to get the size of your image how Andreas kindly showed you:

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

and then multiply that by 0.15 (to get say 15%) and use that in your -resize parameter.


If the "aside processing" inside the parentheses above is upsetting or confusing, you can achieve the same result by loading up and resizing the watermark first, on its own, putting it into an MPR and then loading the main image and overlaying the MPR four times. It is just a different, maybe simpler, syntax:

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


Answered By - Mark Setchell
Answer Checked By - Mildred Charles (PHPFixing Admin)
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg
Newer Post Older Post Home

0 Comments:

Post a Comment

Note: Only a member of this blog may post a comment.

Total Pageviews

Featured Post

Why Learn PHP Programming

Why Learn PHP Programming A widely-used open source scripting language PHP is one of the most popular programming languages in the world. It...

Subscribe To

Posts
Atom
Posts
Comments
Atom
Comments

Copyright © PHPFixing