хорошо, поэтому у меня возникла проблема с получением моего текста над частично прозрачным изображением. Я хочу, чтобы текст был твердым, но я хочу, чтобы часть фона изображения была прозрачной, а часть текста была твердой, и у меня есть проблема: текст наследует прозрачный фон одного из предыдущие слои. вот код и пример вывода, и под этим выходом я хочу, чтобы он выглядел. изображение лежит на светло-сером фоне, поэтому светлая граница вокруг изображения между темным серым прозрачна, но ничто больше не должно быть особенно в тексте. это, по-видимому, не сам текст, а фон прозрачных текстовых блоков. что, как вы видите, не очень желательно. пожалуйста, помогите, это единственная проблема, которую я оставил для завершения своего проекта. 🙂
не может размещать изображения, поэтому имеет ссылку на изображение примера вывода и желаемого результата ( orig ):
<?php $img = imagecreatetruecolor(200, 50); $imageX = imagesx($img); $imageY = imagesy($img); imagealphablending($img, false); imagesavealpha($img, true); $transparent = imagecolorallocatealpha($img, 255,255,255, 127); $white = imagecolorallocate($img, 255,255,255); $grey = imagecolorallocate($img, 127,127,127); imagefilledrectangle($img, 0, 0, $imageX, $imageY, $grey); imagefilledrectangle($img, 2, 2, $imageX-4, $imageY-4, $transparent); $font = "./arialbd.ttf"; $fontSize = 12; $text = "THIS IS A TEST"; $textDim = imagettfbbox($fontSize, 0, $font, $text); $textX = $textDim[2] - $textDim[0]; $textY = $textDim[7] - $textDim[1]; $text_posX = ($imageX / 2) - ($textX / 2); $text_posY = ($imageY / 2) - ($textY / 2); imagefilledrectangle($img, 10, 10, $imageX-10, $imageY-10, $grey); imagettftext($img, $fontSize, 0, $text_posX, $text_posY, $white, $font, $text); header("Content-Type: image/png"); imagepng($img); ?>
hah, я думаю, я не слишком много думал об этом. решение заключалось в том, чтобы вернуть изображение обратно назад, прежде чем накладывать текст на изображение.
<?php $img = imagecreatetruecolor(200, 50); $imageX = imagesx($img); $imageY = imagesy($img); imagealphablending($img, false); imagesavealpha($img, true); $transparent = imagecolorallocatealpha($img, 255,255,255, 127); $white = imagecolorallocate($img, 255,255,255); $grey = imagecolorallocate($img, 127,127,127); imagefilledrectangle($img, 0, 0, $imageX, $imageY, $grey); imagefilledrectangle($img, 2, 2, $imageX-4, $imageY-4, $transparent); $font = "./arialbd.ttf"; $fontSize = 12; $text = "THIS IS A TEST"; $textDim = imagettfbbox($fontSize, 0, $font, $text); $textX = $textDim[2] - $textDim[0]; $textY = $textDim[7] - $textDim[1]; $text_posX = ($imageX / 2) - ($textX / 2); $text_posY = ($imageY / 2) - ($textY / 2); imagefilledrectangle($img, 10, 10, $imageX-10, $imageY-10, $grey); imagealphablending($img, true); imagettftext($img, $fontSize, 0, $text_posX, $text_posY, $white, $font, $text); header("Content-Type: image/png"); imagepng($img); ?>