我使用gd库在图像上写入文本,并将一个普通文件和一个小文件保存到文件夹中。现在,我希望在将用户保存到文件之前为用户提供预览。
这是我测试的代码:
<script src="https://code.jquery.com/jquery-2.1.4.min.js"> </script>
<form action="" method="post">
<p>Slide Text:
<textarea name="slide_text" rows="10" cols="50"></textarea>
</p>
<p>
Font Size:
<select name="font_size" class="font_size"></select>
</p>
<p>
<input type="submit" value = "Write"/>
</p>
<script>
$(function(){
var $select = $(".font_size");
for (i=1;i<=50;i++){
$select.append($('<option></option>').val(i).html(i + ' ' + 'px'))
}
});
</script>
<?php
if(isset($_POST['slide_text'])) {
//treat the values of the form
$text = $_POST['slide_text'];
$image = imagecreatefrompng('template/template.png');
imagealphablending($image, true);
$color = imagecolorallocate($image, 49,117, 175);
$font = 'font/arialbd.ttf';
$font_size = $_POST['font_size'];
$start_x = 50;
$start_y = 175;
$max_width = 578;
$newname = time();
$random = rand(100,999);
$name = $newname.$random;
imagettftext($image, $font_size, 0, $start_x, $start_y, $color, $font, $text);
imagepng($image);
}
?>
当我提交表单时,我得到的是此输出而不是图像:
PNGIHDRЕXHQ‰IDATxœìÝŒEW~ößïlw}û«½ª÷nv÷°»¹Íp8䬙k4K'2%<<ÁQÀðA²8È,‰Ø'mÉ-œÈ##F³¯îäpí}«®®½êíïnçœ_þxÕÍæÚ>êfñ| @² >UïÝwî[îûÞsÎý| EB™和放大器; @Dýá8Žã8ŽsÀìN·ÊqÇqœíOdšÀØÑÿÒ5ÿuÇqǹe[QB” 4 \‡ã8Žã8ï;áæk8Žã8Žóþ%×Ãá8Žã8ÎûNŒº8ܼÇqÇqn¿QÒpC*Žã8Žã¼ÜŠã8Žã8M\àpÇqç}'îtÇqçÆZ2ÖZKŒ0DηNA‰HK,1D)〜«Y}• Žã8ŽssC“,¬í%...5VJúRp@ ya†i'çšV= _‰k3‡±VkB06J +.p8Žã8ÎM#€aZ¬v‡º0Èy%P''6ý¬('EŽ[-ù¯Œ¡Ašw©!,‡ *•üNïÇ_8ÇqçæX¢aVt“çÖ,`l¼Ô”Ȥ¹îg...é™f%ò•μÑͺI(ûRI~§wô6sÃqÇqn“6¶ŸæƒD‡J”Qñ%,μÖjIa@p²PX(ÀZk9ò/ G'“ÑX” K'KÖÛ8T...¶lnÌÓY®=%·ÓpÃqÇqnœμ“š!4K~5”ÆP?É5An¨°$ *ÎcIr!Ë〜9¢%Ú觓X
有没有办法在不使用的情况下将其转换为图像
header('Content-Type: image/png');
?
我能做到这一点的唯一方法是将生成图像的所有代码放入文件并添加header('Content-Type: image/png')
,然后将此文件添加为上述表单的操作。
答案 0 :(得分:1)
您可以内嵌图像
ob_start();
imagepng($image);
$img_data=ob_get_clean();
imagedestroy($image);
echo '<img src="data:image/png;base64,'.base64_encode($img_data).' />';