водяные знаки — PHP: imagePNG () не сохранит файл в каталог. Права доступа к файлам все правильно, все еще не работает

Я пишу программу, которая водяные знаки пользователя загружены фотографии. После завершения наложения функция imagePNG () выводит фотографию в браузер, но не сохраняет ее в каталоге. Все пути правильны, а права доступа к файлу изменены на 0755. Используя только первый параметр функции (imagePNG ($ image)), выводится изображение, однако при добавлении пути (imagePNG ($ image, photo_uploads / «. $ Album_name) . «/»)).

Код:

 <?php
session_start();
use PHPImageWorkshop\ImageWorkshop;
$album_length = $_SESSION['album_length'];
$extension_array = $_SESSION['extension_array'];
$album_name = $_SESSION['album_name'];
chmod("photo_uploads/" . $album_name . "/", 0777);
for($i = 0; $i < $album_length; $i++) {
$path = 'photo_uploads/' . $album_name . '/' . $i .     $extension_array[$i];
// Load the stamp and the photo to apply the watermark to
$stamp = imagecreatefrompng('watermark.png');
//only works with png
$im = imagecreatefrompng($path);

// Set the margins for the stamp and get the height/width of the stamp image
$marge_right = 10;
$marge_bottom = 10;
$sx = imagesx($stamp);
$sy = imagesy($stamp);

// Copy the stamp image onto our photo using the margin offsets and the photo
// width to calculate positioning of the stamp.
imagecopy($im, $stamp, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp));

// Output and free memory
header('Content-type: image/png');
$save = "photo_uploads/" . $album_name . "/";
imagePNG($im, $save);
imagedestroy($im);
}
?>

Я перепробовал все решения для другого подобного вопроса. Функция продолжает выводить измененное изображение, если путь для сохранения не добавлен в качестве второго параметра.

3

Решение

Я не думаю, что ваш путь правильный каталог. Причина в том, что он должен либо сохранять файл, либо выводить его в браузер, а не оба. Если имя файла равно NULL, оно будет выведено в браузер. Попробуйте использовать полное имя пути.

Имена файлов не заканчиваются косой чертой
Это не правильно

$save = "photo_uploads/" . $album_name . "/";

Это имеет больше шансов на работу:

imagePNG($im, $path);

Используйте полный путь:

/home/user/public_html/photo_uploads/something.png

Вот как я это делаю:

  ob_start();
imagepng($newPic, NULL, 9);
$png = ob_get_clean();
ob_clean();
ob_end_flush();
$fp = fopen($filename  ,"w");
fwrite($fp, $png);
fclose($fp);

Затем для вывода в браузер (в масштабе):

  $base64 = base64_encode($png);
echo "<img  width=\"$newWidth\" height=\"$newHeight\" src=\"data:image/png;base64,$base64\"  alt =\"profile photo\"/>";
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]