2015-03-04 3 views
3

У меня есть следующий код, который добавляет имя и фамилию на предопределенное изображение.Как отправить изображение, созданное с помощью php

function create_image($fname, $lname) 
{ 
$image = imagecreatefromjpeg('sample.jpg'); 
$color = imagecolorallocate($image, 255, 255, 255); 
$font_path = '../fonts/GSMT.TTF'; 
$font_size = 18; 
$first_name = $name; 
$last_name = $lname; 
$name = $fname." ". $lname; 

// Print Text On Image 
imagettftext($image, $font_size, 0, 100, 160, $color, $font_path, $name); 

header('Content-type: image/jpeg'); 
imagejpeg($image); 
imagedestroy($image); 
} 

Я использую следующий сценарий электронной почты;

function mailer($email_adrress, $registration_id) 
{ 
$mail = new PHPMailer; 

$mail->isSMTP(); // set mailer to use SMTP 
$mail->Host = 'mail.server.com'; // set mail server 
$mail->SMTPAuth = true; // enable SMTP authentication 
$mail->Username = '[email protected]'; // SMTP username 
$mail->Password = 'password'; // SMTP password 
$mail->Port = 587; // TCP port to connect to 
$mail->IsHTML(true);  
$mail->From = '[email protected]'; 
$mail->FromName = 'John Doe'; // from name  
$mail->addAddress($email_adrress); // recipient        

$mail->Subject = 'emailer'; 
$mail->Body = "Congratulations you have been Successfully registered. 

if(!$mail->send()) 
{ 
    die("error mail not sent); 
} 
} 

Когда функция create_image называется, изображение создается успешно. Но мой вопрос заключается не в том, чтобы распечатать изображение в браузере, как мне его отправить. Должен ли я временно сохранять изображение до отправки почты, а затем удалить его, или есть другой подход?

+0

Вы можете [вставлять изображения base64] (http://stackoverflow.com/questions/1207190/embedding-base64-i маги). Большинство браузеров могут это интерпретировать. Кроме того, пользователю не нужно нажимать «просматривать изображения» в своем клиенте электронной почты/веб-почты. – machineaddict

ответ

1

Я думаю, вы должны использовать буферизацию вывода и кодирование изображения в base64 и использовать его в И тега

ob_start(); 
// output jpeg (or any other chosen) format & quality 
imagejpeg($image); 
$contents = ob_get_contents(); 
ob_end_clean(); 

Теперь вам нужно base64 содержания

$base64 = base64_encode($contents); 

теперь вы можете использовать его в своем сообщении Содержание HTML

<img src="data:image/jpeg;base64,$base64"> 
+0

Вы использовали 'imagejpeg ($ image)' и вывод использует 'data: image/gif'. – machineaddict

+0

хорошая точка спасибо. – Robert

+0

Спасибо! это сработало. :) – nadz

0

Да, вам необходимо его сохранить, отправить, а затем удалить, как вы сказали. Невозможно напрямую использовать php, чтобы показать его. Однако вы можете использовать iframe. Но первое решение, я думаю, лучшее.

Смежные вопросы