Adjust image width and height

in my project, I just watermark the image or image, combine it, working perfectly, and the code for this.

<!DOCTYPE html> <html> <head> <title>test</title> </head> <body> <?php if(isset($_POST['submit'])) { // Give the Complete Path of the folder where you want to save the image $folder="uploads/"; move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], "$folder".$_FILES["fileToUpload"]["name"]); $file='uploads/'.$_FILES["fileToUpload"]["name"]; $uploadimage=$folder.$_FILES["fileToUpload"]["name"]; $newname= time(); $ext = pathinfo($_FILES["fileToUpload"]["name"], PATHINFO_EXTENSION); // Set the thumbnail name $thumbnail = $folder.$newname.".".$ext; $imgname=$newname.".".$ext; // Load the mian image if ($ext=="png" || $ext=="PNG") { $source = imagecreatefrompng($uploadimage); } else if ($ext=="gif" || $ext=="GIF") { $source = imagecreatefromgif($uploadimage); } else if ($ext=="bmp" || $ext=="BMP") { $source = imagecreatefrombmp($uploadimage); } else{ $source = imagecreatefromjpeg($uploadimage); } // load the image you want to you want to be watermarked $watermark = imagecreatefrompng('uploads/logo1.png'); // get the width and height of the watermark image $water_width = imagesx($source)/2; $water_height = imagesy($watermark); // get the width and height of the main image image $main_width = imagesx($source); $main_height = imagesy($source); $im_middle_w = $main_width/2; $im_middle_h = $main_height/2; // Set the dimension of the area you want to place your watermark we use 0 // from x-axis and 0 from y-axis $dime_x = $im_middle_w - $water_width/2; $dime_y = $im_middle_h - $water_height/2; // copy both the images imagecopy($source, $watermark, $dime_x, $dime_y, 0, 0, $water_width, $water_height); // Final processing Creating The Image imagejpeg($source, $thumbnail, 100); unlink($file); } ?> <img src='uploads/<?php echo $imgname;?>'> </body> </html> 

but the problem is with setting $ water_width , and I want to set half of the original image. but when I have the original image with less width or more width than $ water_width, it sets it like this. see the image when the width of the original image is larger.

enter image description here and when the width is less. enter image description here so my problem is how to set $ water_width as half the width of the original image?

by Alex your answer is true. enter image description here

+7
php image-processing image-manipulation
source share
2 answers

This will resize the watermark to half the width of the original image and place it in the center:

 // load the image you want to you want to be watermarked $watermark = imagecreatefrompng('uploads/logo1.png'); // get the width and height of the watermark image $water_width = imagesx($watermark); $water_height = imagesy($watermark); // get the width and height of the main image image $main_width = imagesx($source); $main_height = imagesy($source); // resize watermark to half-width of the image $new_height = round($water_height * $main_width / $water_width / 2); $new_width = round($main_width / 2); $new_watermark = imagecreatetruecolor($new_width, $new_height); // keep transparent background imagealphablending( $new_watermark, false ); imagesavealpha( $new_watermark, true ); imagecopyresampled($new_watermark, $watermark, 0, 0, 0, 0, $new_width, $new_height, $water_width, $water_height); // Set the dimension of the area you want to place your watermark we use 0 // from x-axis and 0 from y-axis $dime_x = round(($main_width - $new_width)/2); $dime_y = round(($main_height - $new_height)/2); // copy both the images imagecopy($source, $new_watermark, $dime_x, $dime_y, 0, 0, $new_width, $new_height); // Final processing Creating The Image imagejpeg($source, $thumbnail, 100); imagedestroy($source); imagedestroy($watermark); imagedestroy($new_watermark); 
+7
source share

You can try the imagettftext method if you do not want such high perfection in transparency. You can try this code. You must save the font file in your directory, here I used arial.ttf.

 $im = imagecreatefrompng("png.png"); //create image data $font = 'arial.ttf'; //font file name $randomString = "example.com"; //string need to be shown $main_width = imagesx($im); //finding width and height $main_height = imagesy($im); $posx= $main_width/2; //finding center $posy = $main_height/2; $color = imagecolorallocate($im, 200, 200, 200); //Creating color $size = ($main_width/25)+1; //determine size of font. +1 to avoid 0 $temp = $size*5; $posx = $posx-$temp; //adjust to average center imagettftext($im,$size,0, $posx, $posy, $color, $font , $randomString); //apply a text 

You must configure posx and posy for your text position. Size can also be adjusted using some logic.

$color = imagecolorallocate($im, 0, 0, 0); = black

and $color = imagecolorallocate($im, 255, 255, 255); = white.

You must adjust this for the desired text color.

+3
source share

All Articles