Отправить изображение, созданное на холсте HTML5, по электронной почте - PullRequest
2 голосов
/ 27 мая 2011

У меня есть холст, с которым пользователь может взаимодействовать, чтобы вносить изменения в дизайн.Теперь, когда пользователь завершит свои изменения, он может отправить свой дизайн вместе со своим идентификатором электронной почты.Но чтобы представить дизайн, я конвертирую холст в изображение, используя http://www.nihilogic.dk/labs/canvas2image/

Теперь я хочу отправить это изображение вместе с идентификатором электронной почты пользователя.Как я могу отправить это изображение напрямую, не позволяя пользователю сохранить его в своей локальной системе.

Ответы [ 3 ]

6 голосов
/ 27 мая 2011

Я думаю, вам нужна магия JavaScript, и поскольку вы уже используете HTML5 canvas, это не должно быть проблемой.

Итак, событие onclick для кнопки отправки, которое отправит ajax-запрос к вашему бэкэнд-скрипту php.

var strDataURI = oCanvas.toDataURL();  
// returns "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACt..."

Вам просто нужно передать strDataURI в качестве параметра. Теперь, я думаю, вы должны также сохранить их в своей базе данных, чтобы электронное письмо могло просто содержать этот тег изображения внутри:

<img src="http://www.yourdomain.com/generate_image.php?id=2" alt="Design #2" />

И что скрипт generate_image.php будет делать что-то вроде этого

<?php

header('Cache-control: max-age=2592000');
header('Expires: ' . gmdate('D, d M Y H:i:s \G\M\T', time() + 2592000));

// connect to db here .. 
// $id = (int)$_GET['id']; "SELECT youtable WHERE id = '{$id}'"
// and the $image variable should contain "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACt..."

list($settings, $encoded_string) = explode(',', $image);
list($img_type, $encoding_method) = explode(';', substr($settings, 5))

header("Content-type: {$img_type}");

if($encoding_method == 'base64')
    die(base64_decode($encoded_string)); // stop script execution and print out the image

else { // use another decoding method
}
1 голос
/ 25 июля 2011
 if(!empty($_POST['email'])){
    $email=$_POST['email'];
    $image=$_POST['legoImage'];
    $headers="From:".$email."\r\n";
    $headers .= "MIME-Version: 1.0\r\n"; 
    $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
    list($settings, $encoded_string) = explode(',', $image);
    list($img_type, $encoding_method) = explode(';', substr($settings, 5));

    if($encoding_method == 'base64'){
       $file=fopen("images/newLego.png",'w+');
       fwrite($file,base64_decode($encoded_string)) ;
       fclose($file);
    }
    $my_file = "newLego.png";
    $my_path = "images/";
    $my_subject = "My Design";
    $my_message = "Designed by ".$email;
    mail_attachment($my_file, $my_path, "myemail@gmail.com", $email, $email, $email, $my_subject, $my_message);        
}

Я поднял функцию mail_ attachment () здесь .

0 голосов
/ 27 мая 2011

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

Выможно обратиться к этому вопросу для примера использования Mail_Mime.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...