我试图在页面上使用php函数从文本输入创建图像。但是似乎什么也没发生。这是我当前的代码-
Php-
$to = $paths. '/card.png';
if (isset($_POST['make_pic'])) {
$text = $_POST['txt_input'];
$im = imagecreate(200, 80);
// White background and blue text
$bg = imagecolorallocate($im, 255, 255, 255);
$textcolor = imagecolorallocate($im, 0, 0, 255);
imagestring($im, 4, 30, 25, $text, $textcolor);
ob_start();
imagepng($im);
$data = ob_get_clean();
file_put_contents($to,$data);
imagedestroy($im);
}
HTML-
<form name="picform" id="picform" action="" method="post" enctype="multipart/form-data">
<input type="text" class="input-field" name="txt_input" maxlength="50">
<input type="submit" id="make_pic" name="make_pic" value="Convert">
</form>
该表单没有操作,原因是我正在使用ajax-
$("#make_pic").click(function() {
$('#picform').ajaxForm();
});
更新
我正在尝试将一张图像放置在我创建的图像之上,从而创建一张最终图像。这是我当前的代码,该代码可用于创建图像,但不能放置叠加图像---
$paths = "/uploads/". $current_user->ID."/".$v_Id;
$assets = "/uploads/assets";
$to = $paths. '/contact_card.png';
// Text from form to be used
$c_name1 = $_POST['c_name'];
$c_biz1 = $_POST['c_biz'];
$c_num = $_POST['c_num'];
$c_mail1 = $_POST['c_email'];
$c_name = strtoupper($c_name1);
$c_biz = strtoupper($c_biz1);
$c_mail = strtoupper($c_mail1);
$headliner = "Contact Info\r\n";
$text = $headliner."\r\n".$c_name."\r\n".$c_biz."\r\n".$c_num."\r\n".$c_mail;
$im = imagecreate(1280, 720);
$im2 = $paths. '/profile_pic.png';
// Black background
$bg = imagecolorallocate($im, 0, 0, 0);
// Text Colors
$black = imagecolorallocate($im, 0, 0, 0);
$grey = imagecolorallocate($im, 128, 128, 128);
$white = imagecolorallocate($im, 255, 255, 255);
// Font text options
$font = $assets.'/fonts/PlayfairDisplay-Regular.ttf';
$font_size = 24;
$angle = 45;
// Get image Width and Height
$image_width = imagesx($im);
$image_height = imagesy($im);
// Get Bounding Box Size
$text_box = imagettfbbox($font_size,$angle,$font,$text);
// Get your Text Width and Height
$text_width = $text_box[2]-$text_box[0];
$text_height = $text_box[7]-$text_box[1];
// Calculate coordinates of the text
$x = 440;
$y = 260;
// Add the text
imagettftext($im, $font_size, 0, $x, $y, $white, $font, $text);
// HERE I AM TRYING TO PLACE A PICTURE LEFT CENTERED ON TOP OF THE OTHER PICTURE
imagecopymerge($im, $im2, 0, 0, 0, 0, 50, 50, 100);
// Create the image and save to server
ob_start();
imagepng($im);
$data = ob_get_clean();
file_put_contents($to,$data);
imagedestroy($im);
答案 0 :(得分:1)
PHP部分实际上对我有用,尽管可以将其替换:
ob_start();
imagepng($im);
$data = ob_get_clean();
file_put_contents($to,$data);
imagedestroy($im);
与此:
imagepng($im, $to);
imagedestroy($im);
但是,如果那是问题,我不是很肯定,因为您现有的代码对我有用。因此,尝试检查$paths
是否为有效目录?
似乎什么都没发生
是因为您在创建图像后没有echo
(或输出了一些东西)吗?好吧,我的意思是,图像可能已经成功(重新)创建了,但是您的PHP / JS脚本不会“告诉”您状态。因此,您什么都看不到。尝试echo
-像这样:
if (isset($_POST['make_pic'])) {
...
imagedestroy($im);
echo 'Success!';
}
然后使用此JS:
$('#picform').ajaxForm({
success: function(res){
alert(res);
}
});
(更新#2:我有意删除了“附加说明”部分,但您总是可以看到答案的revisions来找到该部分。)