我需要提交要转换为图像的签名数据。我正在使用jSignature来捕获签名,并将base30
数据提交给服务器。在服务器上,我使用their PHP script转换数据并将其保存到png。问题是,图像根本不光滑。导出为SVG会产生非常流畅的线条,但将数据直接导出到PNG会使其如下图所示。这是一个关于这个问题的小图片,但如果你打开它,你可以看到它的质量远远低于SVG导出提供的平滑线条。
有没有办法将图像导出到PNG以使其平滑?或者以某种方式将SVG转换为PNG?我认为这必须在没有Imagick的情况下完成。
$signature = new jSignature_Tools_Base30();
$sig_a = $signature->Base64ToNative($user_signature);
//$user_signature is the base30 data
$sig_im = imagecreatetruecolor(1295, 328);
imagesavealpha($sig_im, true);
$sig_trans_colour = imagecolorallocatealpha($sig_im, 0, 0, 0, 127);
imagefill($sig_im, 0, 0, $sig_trans_colour);
imagesetthickness($sig_im, 5);
$sig_black = imagecolorallocate($im, 0, 0, 0);
for ($i = 0; $i<count($a); $i++) {
for ($j = 0; $j<count($a[$i]['x']); $j++) {
if ( ! isset($a[$i]['x'][$j]) or ! isset($a[$i]['x'][$j+1])) break;
imageline($im, $a[$i]['x'][$j], $a[$i]['y'][$j], $a[$i]['x'][$j+1], $a[$i]['y'][$j+1], $black);
}
}
//Then I use imagepng() to export