Захватить изображение в фоновом режиме и сохранить в папке в PHP
Захватите изображение в фоновом режиме и сохраните его в папке на PHP.
Я создал страницу PHP, на которой мы захватываем изображение HTML с помощью html2canvas () и через ajax сохраняем это изображение в папке. Когда я запускаю код из браузера, он показывает HTML-код и сохраняет изображение в заданной папке. (Здесь нормально работает).
Проблема в том, что когда я запускаю один и тот же файл с помощью cmd, например, через PHP cmd или через CRON (php test.php), тогда это не создает изображение, а просто отображает HTML в терминале. Как запустить тот же код в фоновом режиме и сохранить созданное изображение в папке?
test.php
<!DOCTYPE html>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<button type="button" id="capture">Capture & Save</button>
<div class="parent-wrapper">
<div class="wrapper-box" id="canvas" width="1080" height="1080">
<div class="heading">
Lorem Ipsum
</div>
<div class="sub-heading">
Lorem ipsum , Lorem
</div>
<div class="paragraph">
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</div>
<div class="bottom-heading">
#Lorem
</div>
</div>
</div>
<script type="text/javascript">
function truncate(source, size) {
return source.length > size ? source.slice(0, size - 1) + "..." : source;
}
var para = document.querySelector('.paragraph');
var res = truncate(para.innerHTML, 280);
para.innerHTML = res;
</script>
<script src="jquery-3.5.1.min.js"></script>
<script src="html2canvas.min.js"></script>
<script type="text/javascript">
$(function(){
$('.movable_div').on('contextmenu', function(){
return false;
});
$('#capture').click(function(){
div_content = document.querySelector("#canvas");
html2canvas(div_content, {
dpi: 96,
width: 1080,
height: 1080,
}).then(canvas => {
data = canvas.toDataURL('image/jpeg', 1);
save_img(data);
});
});
// Onload Click capture
$('#capture').click();
});
//to save the canvas image
function save_img(data){
//ajax method.
$.post('save_jpg1.php', {data: data}, function(res){
});
}
</script>
</body>
</html>
save_jpg1.php
<?php
//just a random name for the image file
$random = rand(100, 1000);
$savefile = @file_put_contents("output/$random.jpg", base64_decode(explode(",", $_POST['data'])[1]));
//if the file saved properly, print the file name
if($savefile){
echo $random;
}
?>
Заранее спасибо.
Пробовал код ниже, но не работал для меня:
setTimeout(function(){
div_content = document.querySelector("#canvas");
html2canvas(div_content, {
dpi: 96,
width: 1080,
height: 1080,
}).then(canvas => {
data = canvas.toDataURL('image/jpeg', 1);
save_img(data);
});
}, 5000);

2 ответа
Вы можете добиться этого, используя приведенную ниже библиотеку.
Источник: https://github.com/stil/gd-text
Написал скрипт на PHP и запустил через терминал для создания изображения в фоновом режиме.
Терминал не знает, как визуализировать html-файл, как это делает браузер - терминал просто выводит html-файл в виде текстового файла. Я думаю, что может быть способ программно запустить такой рендеринг, и вы можете обновить javascript, чтобы запускать html2canvas при загрузке страницы, а не после щелчка. Таким образом, вы могли запускать его из командной строки, он отображал и запускал функцию сохранения с изображением.
Похоже, у этого могут быть идеи о том, как запустить html-файл из терминала:
Как я могу запустить html-файл с терминала?
В частности, вы можете попробовать обслужить html-файл локально и запустить просмотр в браузере.
-
0Когда срабатывает javascript, он находит конкретный идентификатор этого div, как этот процесс работает в терминале. Цель состоит в том, чтобы вызвать событие и выполнить 1 запуск ajax для сохранения изображения в папке. Есть ли другой способ добиться этого?
Другие вопросы
- Сопоставить поле ввода с номером CNIC в PHP?2 ответ
Я хочу сопоставить упомянутое регулярное выражение с полем ввода номера CNIC, но не могу понять, как? Вот мое регулярное выражение и код. Любая помощь будет высоко оценен. Если пользователь что-то сопоставил, и это соответствует шаблону, то в приведенном ниже диапазоне будет отображаться «действител...
- Избегайте отзывчивости мобильных устройств Wordpress Elementor2 ответ
Я пробовал разные решения, найденные в Интернете, но безуспешно. Я уже пытался удалить строку из файла header.php, но ничего не вышло. Клиент хочет, чтобы веб-сайт на всех мобильных устройствах выглядел точно так же, как настольная версия, поэтому мне нужно удалить то, что делает мою тему адаптивной...
- PHP / HTML BOOTSTRAP 4 Свяжитесь с нами Веб-форма2 ответ
Привет, я ученик, и я хочу использовать динамическую форму связи на моем сайте, но сталкиваюсь с проблемой при попытке сделать ее динамической с помощью HTML / PHP / PEAR. Я не понимаю, как написать php-скрипт для реальной формы, которая работает с Mochahost Тест отлично работает на сервере, но моя ...
- как горизонтально встроить с помощью bootstrap или css2 ответ
Я прочитал много вопросов и много статей, но не могу найти ответ. Вот мой результат кода. [IMG_OUR_ID=54680.png] Вот мой код.checkout-cart-total { background-color: #f5f5f5; padding: 45px; } @media only screen and (max-width: 575px) { .checkout-cart-total { padding: 30px; } } .checkout-c...
- Ошибка уведомления PHP: попытка доступа к смещению массива для значения типа bool в1 ответ
Я только что обновил версию PHP моего сервера до PHP 7.4.5 и теперь получаю эту ошибку: Примечание: попытка получить доступ к смещению массива для значения типа bool в C: \ xampp \ htdocs \ tagopuss \ core \ classes \ tweet.php в строке 69 моя строка 69<li>'.(($likes['likeOn'] === $tweet->t...
- получение динамически созданного значения флажка в php, если установлено или не проверено php и jQuery1 ответ
я имел 1 текстовое поле 3 флажок 1 кнопка добавления 1 кнопка отправки При нажатии кнопки добавления еще 1 текстовое поле и 3 проверки снова добавляются Я ввел данные в текстовое поле и поставил несколько флажков При отправке формы InEed. Данные текстового поля с соответствующим значением флажка с и...
- Как получить значения в js?2 ответ
пожалуйста, удалите эту тему, я был очень глуп, спасибо
- Проблема при чтении нескольких товаров из корзины покупок сеанса1 ответ
Я новичок в PHP, и я создал страницу с нуля. Я нашел в Интернете код корзины покупок, который я взял и использую, и он отлично работает:{ if(isset($_SESSION["shopping_cart"])) { $item_array_id = array_column($_SESSION["shopping_cart"], "item_id"); ...
- Как я могу получить HTML-ввод в PHP без отправки?2 ответ
В принципе, у меня есть форма / форма отправки, но она не публикуется на моем сайте, поскольку это платежный шлюз PayPal, но мне нужно значение из одного из полей ввода текста, как я могу сделать это без публикации / получения? Я слышал, что вы можете сделать это с помощью JS, я пробовал код JS, но ...
- Отправлять данные $ _POST между файлами php1 ответ
У меня есть HTML-форма, элемент действия которой относится к самому php. После нажатия кнопки отправки php перезагружается, и я проверяю, что поле ввода «search» не пустое (если оно пусто, ничего не происходит, а если нет, загружается pag1.php ). Проблема в том, что если я загружу файл pag1.php с по...

"Завидую тестировщикам: все хотят с ними дружить."
at now
что дает вам такую же (но не идентичную) среду, что и cron. Allan Wind