Невозможно изменить размер шрифта для GD imagestring()

Я пытаюсь выполнить этот пример для создания изображения с динамическим текстом.

Я хотел изменить размер шрифта, я ставлю даже 100 вместо 4, но он по-прежнему выглядит так же, как и раньше.

Я не очень хорошо разбираюсь в PHP. Любая помощь будет оценена.

Здесь пример, как маленький он выглядит: (

Здесь мой примерный код -

       $font = 'arial.ttf'; //FONT SIZE

       $width = imagefontwidth($font) * strlen($string) ;
       $height = imagefontheight($font) ;
       $im = imagecreatefrompng($imageO);

       $x = imagesx($im) / 2;   //PLACEMENT CENTERISH – X
       $y = imagesy($im) / 2;   //PLACEMENT CENTERISH – Y

      // $backgroundColor = imagecolorallocate ($im, 255, 255, 255);

       $transparency = 25;
       imagesavealpha($im, true);
       $background = imagecolorallocatealpha($im, background_r, background_g, background_b, $transparency);

       $textColor = imagecolorallocate ($im, 0,0,0);
       imagestring ($im, $font, $x, $y, $string, $textColor);
       imagepng($im,$imageN[$k]);
       $w = imagesx($im);
       $h = imagesy($im);

Спасибо

ДОБАВИТЬ ПОСЛЕ

Теперь, вот что я сделал, но в результате текст не отображается в поле выноски.

       $font = 'arial.ttf'; //YOUR FONT SIZE

       $im = imagecreatefrompng($imageO);
       $string = "My Text";
       $imageN ="NewImage.png";

       $transparency = 25;
       imagesavealpha($im, true);
       $background = imagecolorallocatealpha($im, background_r, background_g, background_b, $transparency);

       $textColor = imagecolorallocate ($im, 0,0,0);
       //imagestring ($im, 5, $x, $y, $string, $textColor);
       imagettftext($im, 36, 0, 10, 20, $textColor, $font, $string);
       imagepng($im,$imageN);

Ответ 1

Вы не можете поставить 100 - http://php.net/manual/en/function.imagestring.php

Только 1-5 (по умолчанию)

UPDATE

Чтобы полностью контролировать размер шрифта, вы можете использовать http://php.net/manual/en/function.imagettftext.php

Пример (с того же сайта):

<?php
// Set the content-type
header('Content-Type: image/png');

// Create the image
$im = imagecreatetruecolor(400, 30);

// Create some colors
$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 399, 29, $white);

// The text to draw
$text = 'Testing...';
// Replace path by your own font path
$font = 'arial.ttf';

// Add some shadow to the text
imagettftext($im, 20, 0, 11, 21, $grey, $font, $text);

// Add the text
imagettftext($im, 20, 0, 10, 20, $black, $font, $text);

// Using imagepng() results in clearer text compared with imagejpeg()
imagepng($im);
imagedestroy($im);
?>

Ответ 2

Я предлагаю вам использовать imagettftext, если вы хотите написать больше текста в любом выбранном вами шрифте.

http://php.net/manual/en/function.imagettftext.php

Ответ 3

Многие предложения, но не решения...

Здесь рабочее решение. Хитрость заключается в использовании imagettftext() для этого. Он позволяет выбрать любой шрифт TrueType любого размера.

На существующем изображении используйте следующий код:

<?php
  $txt = 'This is the text overlay';

  header('Content-type: image/png');

  $image = ImageCreateFromJPEG('existingimage.jpg'); // path to the existing image
  $color = imagecolorallocate($im, 0, 0, 0); // black
  $font = 'fontname.ttf'; // path to font
  imagettftext($image, 14, 0, 395, 85, $color, $font, $txt );

  imagepng($image); // png gets better font results than jpg
  imagedestroy($image);
?>

Это работает для меня!

Ответ 4

Изменение стиля шрифта для укуса может быть выполнено либо с помощью функции imagettftext(), либо imageloadfont(). С обоими вы можете изменить стиль шрифта, но с помощью imageloadfont() вы просто загружаете четко определенный двоичный файл шрифта, и в этом случае вы не можете контролировать точный размер шрифта, не можете его настроить. Вы не можете загружать также файлы шрифтов истинного типа, они должны быть GDF файлами. Используя функцию imagettftext(), вы полностью контролируете стиль шрифта, размер, семейство шрифтов и т.д., В этом случае вы должны использовать файлы шрифтов истинного типа напрямую, выделяя файл на свой компьютер/сервер. Вот два примера с обеими функциями: Пример с функцией captcha с использованием функции imageloadfont():

//Установите ширину и высоту изображения   $ width = 150;   $ height = 30;

//Create the image resource 
$image = ImageCreate($width, $height);  

//We are making three colors, white, black and gray 
$white = ImageColorAllocate($image, 255, 255, 255); 
$black = ImageColorAllocate($image, 46, 29, 29); 
$grey = ImageColorAllocate($image, 204, 204, 204); 

//Make the background black 
ImageFill($image, 0, 0, $black); 

$font = imageloadfont('04b.gdf');

$text='Testing'; 
//Add randomly generated string in white to the image
ImageString($image, $font, 20, 3, $text, $white);

ImageRectangle($image,0,0,$width-1,$height-1,$grey); 
imageline($image, 0, $height/3, $width, $height/3, $grey);
imageline($image, 0, ($height/3)*2, $width, ($height/3)*2, $grey);
imageline($image, $width/2, 0, $width/2, $height, $grey); 

//Tell the browser what kind of file is come in 
header("Content-Type: image/jpeg"); 

//Output the newly created image in jpeg format 
ImageJpeg($image); 

ЗДЕСЬ ПРИМЕР С imagettftext() ФУНКЦИЯ:

//Set the image width and height 
$width = 150; 
$height = 30;

//Create the image resource 
$image = ImageCreate($width, $height);  

//We are making three colors, white, black and gray 
$white = ImageColorAllocate($image, 255, 255, 255); 
$black = ImageColorAllocate($image, 46, 29, 29); 
$grey = ImageColorAllocate($image, 204, 204, 204); 

//Make the background black 
ImageFill($image, 0, 0, $black); 

$font = 'arial.ttf';
$text='Testing';
imagettftext($image, 20, 5, 10, 20, $white, $font, $text);
ImageRectangle($image,0,0,$width-1,$height-1,$grey); 
imageline($image, 0, $height/3, $width, $height/3, $grey);
imageline($image, 0, ($height/3)*2, $width, ($height/3)*2, $grey);
imageline($image, $width/2, 0, $width/2, $height, $grey); 

//Tell the browser what kind of file is come in 
header("Content-Type: image/jpeg"); 

//Output the newly created image in jpeg format 
ImageJpeg($image);