It was necessary to impose a watermark on the image, found the following code on the Internet:
<?php function can_upload($file){ // Π΅ΡΠ»ΠΈ ΠΈΠΌΡ ΠΏΡΡΡΠΎΠ΅, Π·Π½Π°ΡΠΈΡ ΡΠ°ΠΉΠ» Π½Π΅ Π²ΡΠ±ΡΠ°Π½ if($file['name'] == '') return 'ΠΡ Π½Π΅ Π²ΡΠ±ΡΠ°Π»ΠΈ ΡΠ°ΠΉΠ».'; /* Π΅ΡΠ»ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π° 0, Π·Π½Π°ΡΠΈΡ Π΅Π³ΠΎ Π½Π΅ ΠΏΡΠΎΠΏΡΡΡΠΈΠ»ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΎΠ½ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π±ΠΎΠ»ΡΡΠΎΠΉ */ if($file['size'] == 0) return 'Π€Π°ΠΉΠ» ΡΠ»ΠΈΡΠΊΠΎΠΌ Π±ΠΎΠ»ΡΡΠΎΠΉ.'; // ΡΠ°Π·Π±ΠΈΠ²Π°Π΅ΠΌ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° ΠΏΠΎ ΡΠΎΡΠΊΠ΅ ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΌΠ°ΡΡΠΈΠ² $getMime = explode('.', $file['name']); // Π½Π°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠ°ΡΡΠΈΠ²Π° - ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ $mime = strtolower(end($getMime)); // ΠΎΠ±ΡΡΠ²ΠΈΠΌ ΠΌΠ°ΡΡΠΈΠ² Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΡ
ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ $types = array('jpg', 'png', 'gif', 'bmp', 'jpeg'); // Π΅ΡΠ»ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π΅ Π²Ρ
ΠΎΠ΄ΠΈΡ Π² ΡΠΏΠΈΡΠΎΠΊ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΡ
- return if(!in_array($mime, $types)) return 'ΠΠ΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠΉ ΡΠΈΠΏ ΡΠ°ΠΉΠ»Π°.'; return true; } function make_upload($file){ // ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΏΠΎΠ»Π΅Π·Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΎ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ΅ ΠΈ Π²ΠΎΠ΄ΡΠ½ΠΎΠΌ Π·Π½Π°ΠΊΠ΅ $image_info = getimagesize($file['tmp_name']); $watermark_info = getimagesize('watermark.png'); // ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ MIME-ΡΠΈΠΏ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ $format = strtolower(substr($image_info['mime'], strpos($image_info['mime'], '/') + 1)); // ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ Π½Π°Π·Π²Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈ ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ $im_cr_func = "imagecreatefrom" . $format; $im_save_func = "image" . $format; // Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² php $img = $im_cr_func($file['tmp_name']); // Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ Π² php Π½Π°Ρ Π²ΠΎΠ΄ΡΠ½ΠΎΠΉ Π·Π½Π°ΠΊ $watermark = imagecreatefrompng('watermark.png'); // ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π»Π΅Π²ΠΎΠ³ΠΎ Π²Π΅ΡΡ
Π½Π΅Π³ΠΎ ΡΠ³Π»Π° Π²ΠΎΠ΄ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΠΊΠ° $pos_x = ($image_info[0] - $watermark_info[0]); $pos_y = ($image_info[1] - $watermark_info[1]); // ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ Π²ΠΎΠ΄ΡΠ½ΠΎΠΉ Π·Π½Π°ΠΊ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ imagecopy($img, $watermark, $pos_x, $pos_y, 0, 0, $watermark_info[0], $watermark_info[1]); $getMime = explode('.', $file['name']); // Π½Π°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠ°ΡΡΠΈΠ²Π° - ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ $mime = strtolower(end($getMime)); $name = time().".".$mime; $im_save_func($img, 'img/' . $name); echo $im_save_func; } <?php include_once('functions.php') ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ</title> </head> <body> <form method="post" enctype="multipart/form-data"> <input name="MAX_FILE_SIZE" value="10485760"> <input type="file" name="file"> <input type="submit" value="ΠΠ°Π³ΡΡΠ·ΠΈΡΡ ΡΠ°ΠΉΠ»!"> </form> <?php // Π΅ΡΠ»ΠΈ Π±ΡΠ»Π° ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π° ΠΎΡΠΏΡΠ°Π²ΠΊΠ° ΡΠΎΡΠΌΡ if(isset($_FILES['file'])) { // ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ $check = can_upload($_FILES['file']); if($check === true){ // Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ make_upload($_FILES['file']); echo "<strong>Π€Π°ΠΉΠ» ΡΡΠΏΠ΅ΡΠ½ΠΎ Π·Π°Π³ΡΡΠΆΠ΅Π½!</strong>"; } else{ // Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ echo "<strong>$check</strong>"; } echo $im_save_func; } ?> </body> </html> But the problem is that it imposes a watermark when you upload an image to the server, but what if the picture is already on the server? Familiarization with the code showed that during operation, many of the data code takes from $_FILE , when the picture comes to the server. Since the image is already on the server, this is nothing. Can you tell me how to edit the code so that it adds watermarks to already downloaded images? I know the names of the files that need to be edited.