В очень простом объяснении я создаю QR-код с библиотекой, а затем добавляю некоторый текст к этому изображению. Qrcode становится нормальным, но когда я добавляю текст любым шрифтом, который я использую, я получаю размытый текст, который, когда я печатаю его, почти нечитаемым. Почему это становится размытым
Вот функция (я экспериментирую, поэтому в ней может быть несколько идиот c строк)
public function CreateLabel($code, $description)
{
include(getcwd().DIRECTORY_SEPARATOR.'application'.DIRECTORY_SEPARATOR.'libraries'.DIRECTORY_SEPARATOR.'QrCode'.DIRECTORY_SEPARATOR.'qrlib.php');
$qrName = preg_replace( '/[^a-z0-9]+/', '_', strtolower($code)).'.png';
$src_image = D_QR.$qrName;
QRcode::png($code, $src_image);
//Extend Image
list($height, $width) = getimagesize($src_image);
$newWidth = $width + 253;
$newHeight = $height + 83;
$thumbnail = imagecreatetruecolor($newWidth, $newHeight);
imageantialias($thumbnail,false);
$white = imagecolorallocate($thumbnail, 255, 255, 255);
imagefill($thumbnail, 0, 0, $white);
$img_source = imagecreatefrompng($src_image);
imagecopyresampled($thumbnail, $img_source, 0, 87, 0, 0, $width, $height, $width, $height);
imagepng($thumbnail, $src_image, 9);
imagedestroy($img_source);
imagedestroy($thumbnail);
//AddText
$image = imagecreatefrompng($src_image);
imageantialias($image,false);
imagealphablending($image, true);
$black = imagecolorallocate($image, 0, 0, 0);
$tnr = getcwd().DIRECTORY_SEPARATOR.'assets'.DIRECTORY_SEPARATOR.'fonts'.DIRECTORY_SEPARATOR.'Montserrat-Medium.otf';
$nevis = getcwd().DIRECTORY_SEPARATOR.'assets'.DIRECTORY_SEPARATOR.'fonts'.DIRECTORY_SEPARATOR.'Montserrat-ExtraBold.otf';
imagettftext($image, 10, 0, 85,126, $black, $nevis, $code);
$max_length = 45;
if (strlen($description) > $max_length)
{
$newString = wordwrap($description, $max_length, "||");
$parts = explode("||", $newString);
$x = 10;
$y = 20;
for($i = 0; $i <= sizeof($parts); $i++)
{
imagettftext($image, 9, 0, $x, $y*($i+1), $black, $tnr, $parts[$i]);
//imagestring($image, $f, $x, $y*($i+1), $parts[$i], $black*-1);
}
}
else imagettftext($image, 9, 0, 12, 20, $black*-1, $tnr, $description);
imageantialias($image,false);
imagepng($image, $src_image, 9);
imagedestroy($image);
return $qrName;
}
И это изображение, которое она производит:
Как видите, описание (длинная часть) не очень сфокусировано, и при печати оно становится размытым.
Я перепробовал много шрифтов и все еще получаю тот же результат.
Я попытался также использовать imagestring, что намного лучше, но латинский шрифт 1-5 не подходит для меня, и когда я пытаюсь использовать imageloadfont и использовать свой собственный шрифт, я получаю наименьший возможный размер шрифта, и нет способа изменить размер шрифта таким образом.
Почему это происходит или, возможно, какие-либо предложения?
Примечание: я использую PHP Версия 7.0.33 Версия GD: в комплекте (совместимая с 2.1.0) libPNG Версия 1.6.28