PHP: как рисовать курсивный текст жирным шрифтом? [Дубликат]

Для меня самым простым решением будет сохранение значения, когда счетчик равен максимальному. Поэтому достаточно одной строки:

df[df['count'] == df.groupby(['Mt'])['count'].transform(max)]
3
задан Wietse de Vries 13 July 2012 в 15:42
поделиться

4 ответа

Я сам нашел решение, чтобы получить его жирным шрифтом. У меня нет желания объяснять все, потому что я тот, кто задал этот вопрос, поэтому я просто передаю новый код с полученным изображением. Завтра я попробую подчеркнуть ссылку. Если кто-нибудь знает ответ на этот вопрос, я приму этот ответ. Обратите внимание, что я немного изменил код, который не нужен, чтобы заставить код работать.

Код:

<?php
$username = 'WietsedeVries';
$textSize = 10;
$text = addslashes("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed malesuada aliquet dolor, vitae tristique http://www.google.com pellentesque et.");
$maxWidth = 448;

//Create image
$im = imagecreate(468, 60);

// Black background and White text
$bg = imagecolorallocate($im, 0, 0, 0);
$textColor = imagecolorallocate($im, 255, 255, 255);

// Write Bold Username in image
$usernameTotal = '@' . $username . ':';
imagettftext($im, $textSize, 0, 10, $textSize + 10, $textColor, './arialbd.ttf', $usernameTotal);

// Create white space with the width of the username
$usernameBox = imagettfbbox($textSize, 0, './arialbd.ttf', $usernameTotal);
$usernameWidth = $usernameBox[4] - $usernameBox[0];
$whiteSpace = '';
$whiteSpaceWidth = 0;
while($whiteSpaceWidth < $usernameWidth) {
    $whiteSpace .= ' ';
    $whiteSpaceBox = imagettfbbox($textSize, 0, './arial.ttf', $whiteSpace);
    $whiteSpaceWidth = $whiteSpaceBox[4] - $whiteSpaceBox[0];
}

// Split in multiple lines
$words = explode(' ', $text);
array_unshift($words, $whiteSpace);
$lines = array();
$line = "";
foreach ($words as $word) {
    $box = imagettfbbox($textSize, 0, './arial.ttf', $line . $word);
    $width = $box[4] - $box[0];
    if($width > $maxWidth) {
        $line = trim($line);
        $line .= "\n";
    }
    $line .= $word . ' ';
}

// Write the text in the image
imagettftext($im, $textSize, 0, 10, $textSize + 10, $textColor, './arial.ttf', $whiteSpace . ' ' . $line);

// Output the image
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
?>

В результате получается следующее изображение:

Image [/g0]

4
ответ дан Wietse de Vries 22 August 2018 в 21:43
поделиться
  • 1
    Код не дает вышеприведенного вывода – h2O 8 October 2013 в 15:33
  • 2
    Если кто-то еще сталкивается с этим решением; решение заключалось в использовании другого файла .ttf. Поскольку itallic / bold / strike through / underline на самом деле совершенно разные шрифты, довольно легко найти жирную / itallic версию нужного шрифта. Посмотрите, как OP использует imagettfbbox($textSize, 0, './arialbd.ttf', $usernameTotal); для жирного и imagettfbbox($textSize, 0, './arial.ttf', $line . $word); для остальной части текста? 2 разных файла .ttf – IsThisJavascript 9 February 2018 в 15:34

Попробуйте использовать контур / ход. Как, пожалуйста, проверьте этот код.

function imagettfstroketext(&$image, $size, $angle, $x, $y, &$textcolor, &$strokecolor, $fontfile, $text, $px) {
    for($c1 = ($x-abs($px)); $c1 <= ($x+abs($px)); $c1++)
        for($c2 = ($y-abs($px)); $c2 <= ($y+abs($px)); $c2++)
            $bg = imagettftext($image, $size, $angle, $c1, $c2, $strokecolor, $fontfile, $text);
   return imagettftext($image, $size, $angle, $x, $y, $textcolor, $fontfile, $text);
}

$font_color = imagecolorallocate($im, 255, 255, 255);
$stroke_color = imagecolorallocate($im, 0, 0, 0);
imagettfstroketext($im, 60, 10, 300, 130, $font_color, $stroke_color, "wqy-microhei.ttc", "简体繁體", 2);

результат: http://wmh.github.io/hunbook/_static/examples/gd-imagettftext/003.jpg

перейдите к: http://wmh.github.io/hunbook/examples/gd-imagettftext.html

1
ответ дан aji stack 22 August 2018 в 21:43
поделиться
0
ответ дан Brian Mains 22 August 2018 в 21:43
поделиться

В почти каждом шрифте это решение будет работать.

Если вы создаете этот текст:

imagettftext($jpg_image, 35, 0, $x, $y, $color, $font_path, $text2);

, и если вам нужен жирный шрифт, вы должны добавить следующее:

imagettftext($jpg_image, 35, 0, $x, $y, $color, $font_path, $text2);
imagettftext($jpg_image, 35, 0, $x, $y+1, $color, $font_path, $text2);
imagettftext($jpg_image, 35, 0, $x, $y+2, $color, $font_path, $text2);
imagettftext($jpg_image, 35, 0, $x+1, $y, $color, $font_path, $text2);
imagettftext($jpg_image, 35, 0, $x+2, $y, $color, $font_path, $text2);
3
ответ дан Pang 22 August 2018 в 21:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: