简体   繁体   中英

Problem with watermark .JPG images in php

I use this code for watermark photos with PHP uploads. If the photo is a .jpg all is well. If .JPG (capitalized) then this stops working:

 $targetFilePath = $folderPath . $file_name; 
 $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); 
 } 

 $marge_right = 1; 
 $marge_bottom = 1; 

 $sx = imagesx($watermarkImg); 
 $sy = imagesy($watermarkImg); 

 imagecopy($im, $watermarkImg, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($watermarkImg), imagesy($watermarkImg)); 

 imagejpeg($im, $targetFilePath,70); 
 imagedestroy($im); 

I tried adding this, but it didn't help:

 case 'JPG': 
     $im = imagecreatefromjpeg($targetFilePath); 
     break; 

Please help.

Since strtolower does not work. Use if/else condition like this way_

if(preg_match('/[.](jpg)$/i', $file_name)) {  
    $im = imagecreatefromjpeg($targetFilePath);  
} else if (preg_match('/[.](jpeg)$/i', $file_name)) {  
    $im = imagecreatefromjpeg($targetFilePath);  
} else if (preg_match('/[.](png)$/i', $file_name)) {  
    $im = imagecreatefrompng($targetFilePath);  
}  

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM