Skip to main content
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
replaced http://stackoverflow.com/ with https://stackoverflow.com/
Source Link

Tutorials and answers like thisthis and this suggest to use html2canvas first (which I succesfully did) to get the modified content of the paragraph and then to either use a form or an AJAX call to a PHP function to upload the base64 encoded PNG to the server, where it is decoded and saved to /wp-content/uploads. Unfortunately, they don't talk about how to handle things in wordpress, and I'm probably missing something very obvious.

Tutorials and answers like this and this suggest to use html2canvas first (which I succesfully did) to get the modified content of the paragraph and then to either use a form or an AJAX call to a PHP function to upload the base64 encoded PNG to the server, where it is decoded and saved to /wp-content/uploads. Unfortunately, they don't talk about how to handle things in wordpress, and I'm probably missing something very obvious.

Tutorials and answers like this and this suggest to use html2canvas first (which I succesfully did) to get the modified content of the paragraph and then to either use a form or an AJAX call to a PHP function to upload the base64 encoded PNG to the server, where it is decoded and saved to /wp-content/uploads. Unfortunately, they don't talk about how to handle things in wordpress, and I'm probably missing something very obvious.

Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
edited title
Link
Mark Kaplun
  • 23.7k
  • 7
  • 43
  • 65

(help for a university project) Convert canvas to image and upload image to server

Source Link

(help for a university project) Convert canvas to image and upload image to server

I'm working on a wordpress site about blackout poetry for a university project, where the user can blacken parts of a text to create a poem.

After the user has created his poem, we need to give him the possibility to upload the user-generated content to our server, so that we - after having checked and approved the content - can post it on the main "wall" of the website.

This being my first web development project, I've read a ton of related tutorials (literally, every single one of them....), and while my html/javascript/jQuery skills are improving, PHP and ajax calls (that seem to be necessary for this kind of job) are still way out of my league, and I don't have the time to learn them properly, 'cause the deadline is in two weeks.

Tutorials and answers like this and this suggest to use html2canvas first (which I succesfully did) to get the modified content of the paragraph and then to either use a form or an AJAX call to a PHP function to upload the base64 encoded PNG to the server, where it is decoded and saved to /wp-content/uploads. Unfortunately, they don't talk about how to handle things in wordpress, and I'm probably missing something very obvious.

I tried copying the HTML and PHP from this article to see if it worked in my wordpress site (so that I could adapt it): I put the PHP function inside the folder of the theme I'm using, but nothing happens even if a message of successful upload pops up when I press the upload button. Should I add something inside functions.php as well?

This is my code at the moment:

HTML

<div id="target"> // the text that the user interacts with
<p>Lorem ipsum......</p> 
</div>
<br/>
<h3>Preview:</h3>
<div id="previewImage"> // where the preview of the image is displayed
</div>

<input id="Preview-Image" type="button" value="Preview"/>
<a id="download-btn" href="#">
Download
</a>

Scripts:

<script>
$(document).ready(function(){





var element = $("#target");
var getCanvas;

$("#Preview-Image").on('click', function () {
     html2canvas(element, {
     onrendered: function (canvas) {
            $("#previewImage").append(canvas);
            getCanvas = canvas;
         }
     });
});

$("#download-btn").on('click', function () {
var imgData = getCanvas.toDataURL("image/png");

// this bit lets the user download the PNG file

var newData = imgData.replace(/^data:image\/png/, "data:application/octet-stream");
$("#btn-Convert-Html2Image").attr("download", "your_pic_name.jpg").attr("href", newData);
});

});

At this point, based on what I've read, I should include an AJAX call like this:

$.ajax({
url: '/wp-admin/admin-ajax.php',
dataType: 'json',
method: 'post',
data: {action:'save_poem',img:'your-image-data-etc'},
success: function(response){ //server success response },
error: function(err){ //server error response }
})

...and include save_poem inside the theme's functions.php:

function save_poem_image(){
//code to process and save image
}
add_action("wp_ajax_save_poem", "save_poem_image");
add_action("wp_ajax_nopriv_save_poem", "save_poem_image");

Now, my question is: are the steps above correct? What should I put inside save_poem instead of "//code to process and save image"? Should it be the PHP code to decode and save the image? Otherwise, is there a simpler way to achieve what I have in mind?

Thanks in advance!