Thứ Năm, 18 tháng 1, 2024

Upload and Add Watermark to Image using PHP

 File Upload Form

Create an HTML form that allows selecting a file to upload.

  • Make sure the <form> tag contains the following attributes.
    • method=”post”
    • enctype=”multipart/form-data”
  • Also, make sure <input> tag contains type="file" attribute
  • <form action="upload.php" method="post" enctype="multipart/form-data">
        Select Image File to Upload:
        <input type="file" name="file">
        <input type="submit" name="submit" value="Upload">
    </form>

Upload Image and Add Watermark with PHP (upload.php)

The upload.php file handles the image upload and watermark adding functionality.

  • Use PHP pathinfo() function to get the file extension and check whether the selected file type is within the allowed file format.
  • Upload file to server using move_uploaded_file() function in PHP.
  • Load and create a new stamp from the watermark image using imagecreatefrompng() function.
  • Load and create a new image from the uploaded image based on the file type.
  • Set the right and bottom margin for the watermark image.
  • Get the height and width of the watermark image.
  • Copy the watermark image onto the uploaded photo using imagecopy() function.
  • Use margin offsets and image width to calculate the positioning of the watermark.
  • Save image with watermark using imagepng() function.
  • Free memory associated with image resource using imagedestroy() function.
  • Display the watermarked image upload status.
<?php 
// Path configuration
$targetDir "uploads/";
$watermarkImagePath 'codexworld-logo.png';

$statusMsg '';
if(isset(
$_POST["submit"])){
    if(!empty(
$_FILES["file"]["name"])){
        
// File upload path
        
$fileName basename($_FILES["file"]["name"]);
        
$targetFilePath $targetDir $fileName;
        
$fileType pathinfo($targetFilePath,PATHINFO_EXTENSION);
        
        
// Allow certain file formats
        
$allowTypes = array('jpg','png','jpeg');
        if(
in_array($fileType$allowTypes)){
            
// Upload file to the server
            
if(move_uploaded_file($_FILES["file"]["tmp_name"], $targetFilePath)){
                
// Load the stamp and the photo to apply the watermark to
                
$watermarkImg imagecreatefrompng($watermarkImagePath);
                switch(
$fileType){
                    case 
'jpg':
                        
$im imagecreatefromjpeg($targetFilePath);
                        break;
                    case 
'jpeg':
                        
$im imagecreatefromjpeg($targetFilePath);
                        break;
                    case 
'png':
                        
$im imagecreatefrompng($targetFilePath);
                        break;
                    default:
                        
$im imagecreatefromjpeg($targetFilePath);
                }
                
                
// Set the margins for the watermark
                
$marge_right 10;
                
$marge_bottom 10;
                
                
// Get the height/width of the watermark image
                
$sx imagesx($watermarkImg);
                
$sy imagesy($watermarkImg);
                
                
// Copy the watermark image onto our photo using the margin offsets and 
                // the photo width to calculate the positioning of the watermark.
                
imagecopy($im$watermarkImgimagesx($im) - $sx $marge_rightimagesy($im) - $sy $marge_bottom00imagesx($watermarkImg), imagesy($watermarkImg));
                
                
// Save image and free memory
                
imagepng($im$targetFilePath);
                
imagedestroy($im);
    
                if(
file_exists($targetFilePath)){
                    
$statusMsg "The image with watermark has been uploaded successfully.";
                }else{
                    
$statusMsg "Image upload failed, please try again.";
                } 
            }else{
                
$statusMsg "Sorry, there was an error uploading your file.";
            }
        }else{
            
$statusMsg 'Sorry, only JPG, JPEG, and PNG files are allowed to upload.';
        }
    }else{
        
$statusMsg 'Please select a file to upload.';
    }
}

// Display status message
echo $statusMsg;
Note:

Xem lại source khi đưa ảnh vào
$targetDir "../uploads/"; 
$watermarkImagePath '../admin/codexworld-logo.png';

Không có nhận xét nào:

Đăng nhận xét