Проблема с водяными знаками .JPG изображений в php - PullRequest
0 голосов
/ 18 октября 2019

Я использую этот код для фотографий водяных знаков при загрузке PHP. Если на фото .jpg все хорошо. Если .JPG (с большой буквы), то это перестает работать:

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

Я пытался добавить это, но это не помогло:

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

Пожалуйста, помогите.

1 Ответ

0 голосов
/ 18 октября 2019

Так как strtolower не работает. Используйте условие if / else, например: 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);  
}  
...